* Change OAuthScopes into an interface as opposed to boilerplating annotations. * Fixed errors because of boilerplating annotations.
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/62766701 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/62766701 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/62766701 Branch: refs/heads/master Commit: 6276670189d9d0d7d7cc047cf884f7a5cd46ca7c Parents: 6c839f1 Author: Adrian Cole <[email protected]> Authored: Tue Nov 11 20:15:56 2014 -0800 Committer: Adrian Cole <[email protected]> Committed: Wed Nov 12 20:29:16 2014 -0800 ---------------------------------------------------------------------- .../blobstore/GCSBlobStore.java | 2 +- .../config/GoogleCloudStorageHttpApiModule.java | 9 +- .../config/GoogleCloudStorageOAuthScopes.java | 54 ++++++ .../features/BucketAccessControlsApi.java | 25 +-- .../googlecloudstorage/features/BucketApi.java | 48 +---- .../DefaultObjectAccessControlsApi.java | 32 +--- .../features/ObjectAccessControlsApi.java | 60 ++---- .../googlecloudstorage/features/ObjectApi.java | 77 +++----- .../features/ResumableUploadApi.java | 16 +- .../reference/GoogleCloudStorageConstants.java | 17 -- ...StorageAuthenticatedRestContextLiveTest.java | 3 +- .../BucketAccessControlsApiExpectTest.java | 3 +- .../features/BucketApiExpectTest.java | 21 +-- .../features/BucketApiLiveTest.java | 2 +- ...efaultObjectAccessControlsApiExpectTest.java | 3 +- .../ObjectAccessControlsApiExpectTest.java | 3 +- .../BaseGoogleCloudStorageExpectTest.java | 14 +- .../compute/functions/Resources.java | 9 +- .../GoogleComputeEngineHttpApiModule.java | 9 +- .../config/GoogleComputeEngineScopes.java | 28 --- .../features/AddressApi.java | 9 - .../features/AggregatedListApi.java | 3 - .../googlecomputeengine/features/DiskApi.java | 11 -- .../features/DiskTypeApi.java | 3 - .../features/FirewallApi.java | 11 -- .../features/ForwardingRuleApi.java | 10 - .../features/HttpHealthCheckApi.java | 12 -- .../googlecomputeengine/features/ImageApi.java | 13 -- .../features/InstanceApi.java | 18 -- .../features/MachineTypeApi.java | 6 - .../features/NetworkApi.java | 10 - .../features/OperationApi.java | 14 -- .../features/ProjectApi.java | 5 - .../googlecomputeengine/features/RegionApi.java | 3 - .../googlecomputeengine/features/RouteApi.java | 11 -- .../features/SnapshotApi.java | 8 - .../features/TargetPoolApi.java | 16 -- .../googlecomputeengine/features/ZoneApi.java | 3 - ...eEngineAuthenticatedRestContextLiveTest.java | 3 +- .../features/AddressApiExpectTest.java | 2 - .../features/DiskApiExpectTest.java | 2 - .../features/DiskTypeApiExpectTest.java | 1 - .../features/FirewallApiExpectTest.java | 2 - .../features/ForwardingRuleApiExpectTest.java | 2 - .../features/HttpHealthCheckApiExpectTest.java | 2 - .../features/ImageApiExpectTest.java | 2 - .../features/InstanceApiExpectTest.java | 2 - .../features/MachineTypeApiExpectTest.java | 1 - .../features/NetworkApiExpectTest.java | 2 - .../features/OperationApiExpectTest.java | 2 - .../features/ProjectApiExpectTest.java | 2 - .../features/RegionApiExpectTest.java | 1 - .../features/RouteApiExpectTest.java | 2 - .../features/SnapshotApiExpectTest.java | 1 - .../features/TargetPoolApiExpectTest.java | 2 - .../features/ZoneApiExpectTest.java | 1 - .../ToIteratorOfListPageExpectTest.java | 185 ------------------- .../BaseGoogleComputeEngineExpectTest.java | 2 + .../ToIteratorOfListPageExpectTest.java | 183 ++++++++++++++++++ oauth/README | 2 +- oauth/pom.xml | 4 +- .../oauth/v2/config/OAuthHttpApiModule.java | 5 +- .../jclouds/oauth/v2/config/OAuthModule.java | 7 +- .../jclouds/oauth/v2/config/OAuthScopes.java | 63 +++++-- .../oauth/v2/functions/BuildTokenRequest.java | 25 +-- .../oauth/v2/binders/TokenBinderTest.java | 29 ++- .../oauth/v2/features/OAuthApiLiveTest.java | 5 +- .../oauth/v2/features/OAuthApiMockTest.java | 15 +- .../oauth/v2/internal/BaseOAuthApiLiveTest.java | 22 ++- 69 files changed, 442 insertions(+), 738 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GCSBlobStore.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GCSBlobStore.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GCSBlobStore.java index fd8cfdb..7140bdf 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GCSBlobStore.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GCSBlobStore.java @@ -177,7 +177,7 @@ public final class GCSBlobStore extends BaseBlobStore { public boolean blobExists(String container, String name) { try { String urlName = name.contains("/") ? URLEncoder.encode(name, Charsets.UTF_8.toString()) : name; - return api.getObjectApi().objectExist(container, urlName); + return api.getObjectApi().objectExists(container, urlName); } catch (UnsupportedEncodingException e) { throw Throwables.propagate(e); } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageHttpApiModule.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageHttpApiModule.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageHttpApiModule.java index 56f6ac6..db7aba8 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageHttpApiModule.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageHttpApiModule.java @@ -33,6 +33,7 @@ import org.jclouds.http.annotation.ClientError; import org.jclouds.http.annotation.Redirection; import org.jclouds.http.annotation.ServerError; import org.jclouds.location.Provider; +import org.jclouds.oauth.v2.config.OAuthScopes; import org.jclouds.rest.AuthorizationException; import org.jclouds.rest.ConfiguresHttpApi; import org.jclouds.rest.config.HttpApiModule; @@ -44,12 +45,12 @@ import com.google.common.base.Supplier; import com.google.common.collect.Iterables; import com.google.inject.Provides; -/** - * Configures the GoogleCloud connection. - */ @ConfiguresHttpApi public class GoogleCloudStorageHttpApiModule extends HttpApiModule<GoogleCloudStorageApi> { - public GoogleCloudStorageHttpApiModule() { + + @Override public void configure(){ + super.configure(); + bind(OAuthScopes.class).toInstance(GoogleCloudStorageOAuthScopes.create()); } @Override http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageOAuthScopes.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageOAuthScopes.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageOAuthScopes.java new file mode 100644 index 0000000..8537e8b --- /dev/null +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageOAuthScopes.java @@ -0,0 +1,54 @@ +/* + * 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.config; + +import java.util.List; + +import org.jclouds.http.HttpRequest; +import org.jclouds.oauth.v2.config.OAuthScopes; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; + +@AutoValue public abstract class GoogleCloudStorageOAuthScopes implements OAuthScopes { + abstract OAuthScopes readOrWriteScopes(); + + /** Full control is read/write + acls */ + abstract List<String> fullControlScopes(); + + public static GoogleCloudStorageOAuthScopes create() { + return new AutoValue_GoogleCloudStorageOAuthScopes( // + OAuthScopes.ReadOrWriteScopes.create( // + "https://www.googleapis.com/auth/devstorage.read_only", // + "https://www.googleapis.com/auth/devstorage.read_write"), // + ImmutableList.of("https://www.googleapis.com/auth/devstorage.full_control") // + ); + } + + /** If the path contains or ends with {@code /acl} or {@code /defaultObjectAcl}, it needs full-control. */ + @Override public List<String> forRequest(HttpRequest input) { + String path = input.getEndpoint().getPath(); + if (path.endsWith("/acl") || path.endsWith("/defaultObjectAcl") // + || path.contains("/acl/") || path.contains("/defaultObjectAcl/")) { + return fullControlScopes(); + } + return readOrWriteScopes().forRequest(input); + } + + GoogleCloudStorageOAuthScopes() { + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/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 3d428da..a805c7d 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 @@ -16,7 +16,7 @@ */ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import java.util.List; @@ -29,14 +29,12 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.googlecloudstorage.domain.BucketAccessControls; import org.jclouds.googlecloudstorage.domain.templates.BucketAccessControlsTemplate; 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; @@ -54,6 +52,7 @@ import org.jclouds.rest.binders.BindToJsonPayload; @SkipEncoding({ '/', '=' }) @RequestFilters(OAuthAuthenticationFilter.class) +@Consumes(APPLICATION_JSON) public interface BucketAccessControlsApi { /** @@ -70,9 +69,7 @@ public interface BucketAccessControlsApi { @Named("BucketAccessControls:get") @GET - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable BucketAccessControls getBucketAccessControls(@PathParam("bucket") String bucketName, @@ -92,9 +89,7 @@ public interface BucketAccessControlsApi { @Named("BucketAccessControls:insert") @POST - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/acl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) BucketAccessControls createBucketAccessControls(@PathParam("bucket") String bucketName, @BinderParam(BindToJsonPayload.class) BucketAccessControlsTemplate template); @@ -108,9 +103,7 @@ public interface BucketAccessControlsApi { @Named("BucketAccessControls:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable HttpResponse deleteBucketAccessControls(@PathParam("bucket") String bucketName, @PathParam("entity") String entity); @@ -126,10 +119,8 @@ public interface BucketAccessControlsApi { @Named("BucketAccessControls:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/acl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable @SelectJson("items") @@ -147,13 +138,10 @@ public interface BucketAccessControlsApi { * * @return If successful, this method returns a {@link BucketAccessControlsTemplate} resource in the response body */ - @Named("BucketAccessControls:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) BucketAccessControls updateBucketAccessControls(@PathParam("bucket") String bucketName, @PathParam("entity") String entity, @@ -173,13 +161,10 @@ public interface BucketAccessControlsApi { * * @return If successful, this method returns a BucketAccessControls resource in the response body */ - @Named("BucketAccessControls:patch") @PATCH - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) BucketAccessControls patchBucketAccessControls(@PathParam("bucket") String bucketName, @PathParam("entity") String entity, http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/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 a6dd146..cdca05c 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 @@ -16,8 +16,7 @@ */ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_READONLY_SCOPE; +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import javax.inject.Named; import javax.ws.rs.Consumes; @@ -29,7 +28,6 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; import org.jclouds.Fallbacks.FalseOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; @@ -46,7 +44,6 @@ import org.jclouds.googlecloudstorage.options.InsertBucketOptions; import org.jclouds.googlecloudstorage.options.ListOptions; import org.jclouds.googlecloudstorage.options.UpdateBucketOptions; 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; @@ -63,6 +60,7 @@ import org.jclouds.rest.binders.BindToJsonPayload; @SkipEncoding({ '/', '=' }) @RequestFilters(OAuthAuthenticationFilter.class) +@Consumes(APPLICATION_JSON) public interface BucketApi { /** @@ -75,9 +73,7 @@ public interface BucketApi { */ @Named("Bucket:get") @GET - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(FalseOnNotFoundOr404.class) boolean bucketExist(@PathParam("bucket") String bucketName); @@ -91,10 +87,8 @@ public interface BucketApi { */ @Named("Bucket:get") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}") - @OAuthScopes(STORAGE_READONLY_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Bucket getBucket(@PathParam("bucket") String bucketName); @@ -111,10 +105,8 @@ public interface BucketApi { */ @Named("Bucket:get") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}") - @OAuthScopes(STORAGE_READONLY_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Bucket getBucket(@PathParam("bucket") String bucketName, GetBucketOptions options); @@ -131,9 +123,7 @@ public interface BucketApi { */ @Named("Bucket:insert") @POST - @Consumes(MediaType.APPLICATION_JSON) @Path("/b") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnBucketAlreadyExists.class) Bucket createBucket(@QueryParam("project") String projectId, @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate); @@ -152,9 +142,7 @@ public interface BucketApi { */ @Named("Bucket:insert") @POST - @Consumes(MediaType.APPLICATION_JSON) @Path("/b") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnKeyAlreadyExists.class) Bucket createBucket(@QueryParam("project") String projectId, @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate, InsertBucketOptions options); @@ -167,10 +155,8 @@ public interface BucketApi { */ @Named("Bucket:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}") @Fallback(TrueOnNotFoundOr404.class) - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) boolean deleteBucket(@PathParam("bucket") String bucketName); /** @@ -183,10 +169,8 @@ public interface BucketApi { */ @Named("Bucket:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}") @Fallback(TrueOnNotFoundOr404.class) - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) boolean deleteBucket(@PathParam("bucket") String bucketName, DeleteBucketOptions options); /** @@ -199,10 +183,8 @@ public interface BucketApi { */ @Named("Bucket:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Bucket> listBucket(@QueryParam("project") String projectId); @@ -216,10 +198,8 @@ public interface BucketApi { */ @Named("Bucket:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<Bucket> listBucket(@QueryParam("project") String projectId, ListOptions options); @@ -235,10 +215,8 @@ public interface BucketApi { */ @Named("Bucket:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) Bucket updateBucket(@PathParam("bucket") String bucketName, @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate); @@ -257,10 +235,8 @@ public interface BucketApi { */ @Named("Bucket:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) Bucket updateBucket(@PathParam("bucket") String bucketName, @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate, UpdateBucketOptions options); @@ -279,10 +255,8 @@ public interface BucketApi { */ @Named("Bucket:patch") @PATCH - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) Bucket patchBucket(@PathParam("bucket") String bucketName, @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate); @@ -303,10 +277,8 @@ public interface BucketApi { */ @Named("Bucket:patch") @PATCH - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) Bucket patchBucket(@PathParam("bucket") String bucketName, @BinderParam(BindToJsonPayload.class) BucketTemplate bucketTemplate, UpdateBucketOptions options); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/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 9fda891..6106358 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 @@ -16,7 +16,7 @@ */ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import java.util.List; @@ -30,7 +30,6 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole; @@ -38,7 +37,6 @@ import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; import org.jclouds.googlecloudstorage.domain.templates.ObjectAccessControlsTemplate; 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; @@ -56,6 +54,7 @@ import org.jclouds.rest.binders.BindToJsonPayload; @SkipEncoding({ '/', '=' }) @RequestFilters(OAuthAuthenticationFilter.class) +@Consumes(APPLICATION_JSON) public interface DefaultObjectAccessControlsApi { /** @@ -69,12 +68,9 @@ public interface DefaultObjectAccessControlsApi { * * @return an DefaultObjectAccessControls resource */ - @Named("DefaultObjectAccessControls:get") @GET - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/defaultObjectAcl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable ObjectAccessControls getDefaultObjectAccessControls(@PathParam("bucket") String bucketName, @@ -89,13 +85,10 @@ public interface DefaultObjectAccessControlsApi { * * @return If successful, this method returns a DefaultObjectAccessControls resource */ - @Named("DefaultObjectAccessControls:insert") @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/defaultObjectAcl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) ObjectAccessControls createDefaultObjectAccessControls(@PathParam("bucket") String bucketName, @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template); @@ -112,9 +105,7 @@ public interface DefaultObjectAccessControlsApi { */ @Named("DefaultObjectAccessControls:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/defaultObjectAcl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable HttpResponse deleteDefaultObjectAccessControls(@PathParam("bucket") String bucketName, @@ -129,13 +120,10 @@ public interface DefaultObjectAccessControlsApi { * @return ListObjectAccessControls resource * */ - @Named("DefaultObjectAccessControls:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/defaultObjectAcl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable @SelectJson("items") @@ -152,10 +140,8 @@ public interface DefaultObjectAccessControlsApi { */ @Named("DefaultObjectAccessControls:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/defaultObjectAcl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) ObjectAccessControls updateDefaultObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("entity") String entity, @@ -169,10 +155,8 @@ public interface DefaultObjectAccessControlsApi { */ @Named("DefaultObjectAccessControls:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/defaultObjectAcl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) ObjectAccessControls updateDefaultObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("entity") String entity, @@ -187,10 +171,8 @@ public interface DefaultObjectAccessControlsApi { */ @Named("DefaultObjectAccessControls:patch") @PATCH - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/defaultObjectAcl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) ObjectAccessControls patchDefaultObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("entity") String entity, http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/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 5b0e0a9..92299f1 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 @@ -16,7 +16,7 @@ */ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import java.util.List; @@ -30,13 +30,11 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; import org.jclouds.Fallbacks.NullOnNotFoundOr404; import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; import org.jclouds.googlecloudstorage.domain.templates.ObjectAccessControlsTemplate; import org.jclouds.javax.annotation.Nullable; -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; @@ -51,9 +49,9 @@ import org.jclouds.rest.binders.BindToJsonPayload; * * @see <a href = " https://developers.google.com/storage/docs/json_api/v1/objectAccessControls "/> */ - @SkipEncoding({ '/', '=' }) @RequestFilters(OAuthAuthenticator.class) +@Consumes(APPLICATION_JSON) public interface ObjectAccessControlsApi { /** @@ -72,9 +70,7 @@ public interface ObjectAccessControlsApi { @Named("ObjectAccessControls:get") @GET - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable ObjectAccessControls getObjectAccessControls(@PathParam("bucket") String bucketName, @@ -97,9 +93,7 @@ public interface ObjectAccessControlsApi { */ @Named("ObjectAccessControls:get") @GET - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable ObjectAccessControls getObjectAccessControls(@PathParam("bucket") String bucketName, @@ -119,10 +113,8 @@ public interface ObjectAccessControlsApi { */ @Named("ObjectAccessControls:insert") @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) ObjectAccessControls createObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template); @@ -142,10 +134,8 @@ public interface ObjectAccessControlsApi { */ @Named("ObjectAccessControls:insert") @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) ObjectAccessControls createObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template, @@ -162,12 +152,9 @@ public interface ObjectAccessControlsApi { * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, * group-emailAddress, allUsers, or allAuthenticatedUsers */ - @Named("ObjectAccessControls:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) void deleteObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @PathParam("entity") String entity); @@ -186,9 +173,7 @@ public interface ObjectAccessControlsApi { */ @Named("ObjectAccessControls:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) void deleteObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @PathParam("entity") String entity, @QueryParam("generation") Long generation); @@ -202,12 +187,10 @@ public interface ObjectAccessControlsApi { */ @Named("ObjectAccessControls:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) - @Fallback(NullOnNotFoundOr404.class) @SelectJson("items") + @Fallback(NullOnNotFoundOr404.class) @Nullable List<ObjectAccessControls> listObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName); @@ -225,12 +208,10 @@ public interface ObjectAccessControlsApi { */ @Named("ObjectAccessControls:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) - @Fallback(NullOnNotFoundOr404.class) @SelectJson("items") + @Fallback(NullOnNotFoundOr404.class) @Nullable List<ObjectAccessControls> listObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @QueryParam("generation") Long generation); @@ -253,12 +234,8 @@ public interface ObjectAccessControlsApi { @Named("ObjectAccessControls:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) - @Fallback(NullOnNotFoundOr404.class) - @Nullable ObjectAccessControls updateObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @PathParam("entity") String entity, @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template); @@ -280,14 +257,10 @@ public interface ObjectAccessControlsApi { * * @return {@link ObjectAccessControls } */ - @Named("ObjectAccessControls:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) - @Fallback(NullOnNotFoundOr404.class) ObjectAccessControls updateObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @PathParam("entity") String entity, @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template, @@ -308,14 +281,10 @@ public interface ObjectAccessControlsApi { * * @return an {@link ObjectAccessControls } */ - @Named("ObjectAccessControls:patch") @PATCH - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) - @Fallback(NullOnNotFoundOr404.class) ObjectAccessControls patchObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @PathParam("entity") String entity, @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template); @@ -337,17 +306,12 @@ public interface ObjectAccessControlsApi { * * @return {@link ObjectAccessControls } */ - @Named("ObjectAccessControls:patch") @PATCH - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("/b/{bucket}/o/{object}/acl/{entity}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) - @Fallback(NullOnNotFoundOr404.class) ObjectAccessControls patchObjectAccessControls(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @PathParam("entity") String entity, @BinderParam(BindToJsonPayload.class) ObjectAccessControlsTemplate template, @QueryParam("generation") Long generation); - } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/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 e058647..00407b5 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 @@ -16,8 +16,7 @@ */ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_WRITEONLY_SCOPE; +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import javax.inject.Named; import javax.ws.rs.Consumes; @@ -29,7 +28,6 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; import org.jclouds.Fallbacks.FalseOnNotFoundOr404; import org.jclouds.Fallbacks.NullOnNotFoundOr404; @@ -52,7 +50,6 @@ import org.jclouds.googlecloudstorage.parser.ParseToPayloadEnclosing; import org.jclouds.io.Payload; import org.jclouds.io.PayloadEnclosing; import org.jclouds.javax.annotation.Nullable; -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; @@ -70,7 +67,6 @@ import org.jclouds.rest.binders.BindToJsonPayload; * * @see <a href="https://developers.google.com/storage/docs/json_api/v1/objects"/> */ - @SkipEncoding({ '/', '=' }) @RequestFilters(OAuthAuthenticator.class) public interface ObjectApi { @@ -87,12 +83,10 @@ public interface ObjectApi { */ @Named("Object:Exist") @GET - @Consumes(MediaType.APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(FalseOnNotFoundOr404.class) @Nullable - boolean objectExist(@PathParam("bucket") String bucketName, @PathParam("object") String objectName); + boolean objectExists(@PathParam("bucket") String bucketName, @PathParam("object") String objectName); /** * Retrieve an object metadata @@ -106,10 +100,8 @@ public interface ObjectApi { */ @Named("Object:get") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) + @Consumes(APPLICATION_JSON) @Fallback(NullOnNotFoundOr404.class) @Nullable GCSObject getObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName); @@ -128,10 +120,8 @@ public interface ObjectApi { */ @Named("Object:get") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) + @Consumes(APPLICATION_JSON) @Fallback(NullOnNotFoundOr404.class) @Nullable GCSObject getObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @@ -151,7 +141,6 @@ public interface ObjectApi { @GET @QueryParams(keys = "alt", values = "media") @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @ResponseParser(ParseToPayloadEnclosing.class) @Fallback(NullOnNotFoundOr404.class) @Nullable @@ -172,11 +161,8 @@ public interface ObjectApi { @Named("Object:get") @GET @QueryParams(keys = "alt", values = "media") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") @ResponseParser(ParseToPayloadEnclosing.class) - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable PayloadEnclosing download(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, GetObjectOptions options); @@ -196,9 +182,8 @@ public interface ObjectApi { @Named("Object:simpleUpload") @POST @QueryParams(keys = "uploadType", values = "media") - @Consumes(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("/upload/storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @MapBinder(UploadBinder.class) GCSObject simpleUpload(@PathParam("bucket") String bucketName, @HeaderParam("Content-Type") String contentType, @HeaderParam("Content-Length") Long contentLength, @PayloadParam("payload") Payload payload, @@ -214,11 +199,9 @@ public interface ObjectApi { */ @Named("Object:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") @Fallback(TrueOnNotFoundOr404.class) - @OAuthScopes(STORAGE_WRITEONLY_SCOPE) - boolean deleteObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName); + boolean deleteObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName); /** * Deletes an object and its metadata. Deletions are permanent if versioning is not enabled for the bucket, or if the @@ -233,10 +216,8 @@ public interface ObjectApi { */ @Named("Object:delete") @DELETE - @Consumes(MediaType.APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") @Fallback(TrueOnNotFoundOr404.class) - @OAuthScopes(STORAGE_WRITEONLY_SCOPE) boolean deleteObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, DeleteObjectOptions options); @@ -250,10 +231,8 @@ public interface ObjectApi { */ @Named("Object:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<GCSObject> listObjects(@PathParam("bucket") String bucketName); @@ -268,12 +247,9 @@ public interface ObjectApi { */ @Named("Object:list") @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) - @Fallback(NullOnNotFoundOr404.class) - @Nullable + @Fallback(EmptyListPageOnNotFoundOr404.class) ListPage<GCSObject> listObjects(@PathParam("bucket") String bucketName, ListObjectOptions options); /** @@ -290,10 +266,9 @@ public interface ObjectApi { */ @Named("Object:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) GCSObject updateObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate); @@ -314,10 +289,9 @@ public interface ObjectApi { */ @Named("Object:update") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) GCSObject updateObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate, UpdateObjectOptions options); @@ -336,10 +310,9 @@ public interface ObjectApi { */ @Named("Object:patch") @PATCH - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) GCSObject patchObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate); @@ -360,10 +333,9 @@ public interface ObjectApi { */ @Named("Object:patch") @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) + @Produces(APPLICATION_JSON) @Path("storage/v1/b/{bucket}/o/{object}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @Fallback(NullOnNotFoundOr404.class) GCSObject patchObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, @BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate, UpdateObjectOptions options); @@ -382,9 +354,8 @@ public interface ObjectApi { */ @Named("Object:compose") @POST - @Consumes(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("storage/v1/b/{destinationBucket}/o/{destinationObject}/compose") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) GCSObject composeObjects(@PathParam("destinationBucket") String destinationBucket, @PathParam("destinationObject") String destinationObject, @BinderParam(BindToJsonPayload.class) ComposeObjectTemplate composeObjectTemplate); @@ -405,9 +376,8 @@ public interface ObjectApi { */ @Named("Object:compose") @POST - @Consumes(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("storage/v1/b/{destinationBucket}/o/{destinationObject}/compose") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) GCSObject composeObjects(@PathParam("destinationBucket") String destinationBucket, @PathParam("destinationObject") String destinationObject, @BinderParam(BindToJsonPayload.class) ComposeObjectTemplate composeObjectTemplate, @@ -429,9 +399,8 @@ public interface ObjectApi { */ @Named("Object:copy") @POST - @Consumes(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("/storage/v1/b/{sourceBucket}/o/{sourceObject}/copyTo/b/{destinationBucket}/o/{destinationObject}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) GCSObject copyObject(@PathParam("destinationBucket") String destinationBucket, @PathParam("destinationObject") String destinationObject, @PathParam("sourceBucket") String sourceBucket, @PathParam("sourceObject") String sourceObject); @@ -454,9 +423,8 @@ public interface ObjectApi { */ @Named("Object:copy") @POST - @Consumes(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("/storage/v1/b/{sourceBucket}/o/{sourceObject}/copyTo/b/{destinationBucket}/o/{destinationObject}") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) GCSObject copyObject(@PathParam("destinationBucket") String destinationBucket, @PathParam("destinationObject") String destinationObject, @PathParam("sourceBucket") String sourceBucket, @PathParam("sourceObject") String sourceObject, CopyObjectOptions options); @@ -476,9 +444,8 @@ public interface ObjectApi { @Named("Object:multipartUpload") @POST @QueryParams(keys = "uploadType", values = "multipart") - @Consumes(MediaType.APPLICATION_JSON) + @Consumes(APPLICATION_JSON) @Path("/upload/storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @MapBinder(MultipartUploadBinder.class) GCSObject multipartUpload(@PathParam("bucket") String bucketName, @PayloadParam("template") ObjectTemplate objectTemplate, http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/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 3f68e30..eae3de6 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 @@ -16,7 +16,7 @@ */ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import javax.inject.Named; import javax.ws.rs.Consumes; @@ -27,7 +27,6 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; import org.jclouds.googlecloudstorage.binders.UploadBinder; import org.jclouds.googlecloudstorage.domain.ResumableUpload; @@ -35,7 +34,6 @@ import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; import org.jclouds.googlecloudstorage.options.InsertObjectOptions; 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; @@ -52,9 +50,9 @@ import org.jclouds.rest.binders.BindToJsonPayload; * @see <a href="https://developers.google.com/storage/docs/json_api/v1/objects"/> * @see <a href="https://developers.google.com/storage/docs/json_api/v1/how-tos/upload#resumable"/> */ - @SkipEncoding({ '/', '=' }) @RequestFilters(OAuthAuthenticator.class) +@Consumes(APPLICATION_JSON) public interface ResumableUploadApi { /** @@ -76,9 +74,7 @@ public interface ResumableUploadApi { @Named("Object:initResumableUpload") @POST @QueryParams(keys = "uploadType", values = "resumable") - @Consumes(MediaType.APPLICATION_JSON) @Path("/upload/storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @ResponseParser(ParseToResumableUpload.class) ResumableUpload initResumableUpload(@PathParam("bucket") String bucketName, @QueryParam("name") String objectName, @HeaderParam("X-Upload-Content-Type") String contentType, @@ -103,9 +99,7 @@ public interface ResumableUploadApi { @Named("Object:resumableUpload") @POST @QueryParams(keys = "uploadType", values = "resumable") - @Consumes(MediaType.APPLICATION_JSON) @Path("/upload/storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @ResponseParser(ParseToResumableUpload.class) ResumableUpload initResumableUpload(@PathParam("bucket") String bucketName, @HeaderParam("X-Upload-Content-Type") String contentType, @@ -126,10 +120,8 @@ public interface ResumableUploadApi { */ @Named("Object:resumableUpload") @PUT - @Consumes(MediaType.APPLICATION_JSON) @QueryParams(keys = "uploadType", values = "resumable") @Path("/upload/storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @MapBinder(UploadBinder.class) @ResponseParser(ParseToResumableUpload.class) ResumableUpload upload(@PathParam("bucket") String bucketName, @QueryParam("upload_id") String uploadId, @@ -158,10 +150,8 @@ public interface ResumableUploadApi { */ @Named("Object:Upload") @PUT - @Consumes(MediaType.APPLICATION_JSON) @QueryParams(keys = "uploadType", values = "resumable") @Path("/upload/storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @MapBinder(UploadBinder.class) @ResponseParser(ParseToResumableUpload.class) ResumableUpload chunkUpload(@PathParam("bucket") String bucketName, @QueryParam("upload_id") String uploadId, @@ -185,11 +175,9 @@ public interface ResumableUploadApi { @Named("Object:Upload") @PUT - @Consumes(MediaType.APPLICATION_JSON) @DefaultValue("0") @QueryParams(keys = "uploadType", values = "resumable") @Path("/upload/storage/v1/b/{bucket}/o") - @OAuthScopes(STORAGE_FULLCONTROL_SCOPE) @ResponseParser(ParseToResumableUpload.class) ResumableUpload checkStatus(@PathParam("bucket") String bucketName, @QueryParam("upload_id") String uploadId, @HeaderParam("Content-Range") String contentRange); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/reference/GoogleCloudStorageConstants.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/reference/GoogleCloudStorageConstants.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/reference/GoogleCloudStorageConstants.java index 7607ce0..b593120 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/reference/GoogleCloudStorageConstants.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/reference/GoogleCloudStorageConstants.java @@ -16,10 +16,6 @@ */ package org.jclouds.googlecloudstorage.reference; -import org.jclouds.domain.Location; -import org.jclouds.domain.LocationBuilder; -import org.jclouds.domain.LocationScope; - import com.google.common.annotations.Beta; public final class GoogleCloudStorageConstants { @@ -29,28 +25,15 @@ public final class GoogleCloudStorageConstants { public static final String GCS_PROVIDER_NAME = "google-cloud-storage"; - public static final String STORAGE_READONLY_SCOPE = "https://www.googleapis.com/auth/devstorage.read_only"; - - public static final String STORAGE_WRITEONLY_SCOPE = "https://www.googleapis.com/auth/devstorage.write_only"; - - public static final String STORAGE_READWRITE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; - - public static final String STORAGE_FULLCONTROL_SCOPE = "https://www.googleapis.com/auth/devstorage.full_control"; - /** * The total time, in msecs, to wait for an operation to complete. */ - @Beta public static final String OPERATION_COMPLETE_TIMEOUT = "jclouds.google-cloud-storage.operation-complete-timeout"; /** * The interval, in msecs, between calls to check whether an operation has completed. */ - @Beta public static final String OPERATION_COMPLETE_INTERVAL = "jclouds.google-cloud-storage.operation-complete-interval"; - - public static final Location GOOGLE_PROVIDER_LOCATION = new LocationBuilder().scope(LocationScope.PROVIDER).id - (GCS_PROVIDER_NAME).description(GCS_PROVIDER_NAME).build(); } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/GoogleCloudStorageAuthenticatedRestContextLiveTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/GoogleCloudStorageAuthenticatedRestContextLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/GoogleCloudStorageAuthenticatedRestContextLiveTest.java index ecb814f..c1b8636 100644 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/GoogleCloudStorageAuthenticatedRestContextLiveTest.java +++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/GoogleCloudStorageAuthenticatedRestContextLiveTest.java @@ -16,7 +16,6 @@ */ package org.jclouds.googlecloudstorage; -import org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants; import org.jclouds.oauth.v2.internal.BaseOAuthAuthenticatedApiLiveTest; import org.testng.annotations.Test; @@ -30,6 +29,6 @@ public class GoogleCloudStorageAuthenticatedRestContextLiveTest extends @Override public String getScopes() { - return GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; + return "https://www.googleapis.com/auth/devstorage.full_control"; } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApiExpectTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApiExpectTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApiExpectTest.java index 89ec40b..ab6484f 100644 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApiExpectTest.java +++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApiExpectTest.java @@ -17,7 +17,6 @@ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; import static org.testng.Assert.assertEquals; import static org.testng.AssertJUnit.assertNull; @@ -34,7 +33,7 @@ import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; import org.testng.annotations.Test; -@Test(groups = "unit") +@Test(groups = "unit", testName = "BucketAccessControlsApiExpectTest") public class BucketAccessControlsApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { private static final String EXPECTED_TEST_BUCKET = "jcloudtestbucket"; http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiExpectTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiExpectTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiExpectTest.java index cc42510..f71425b 100644 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiExpectTest.java +++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiExpectTest.java @@ -14,11 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_READONLY_SCOPE; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.AssertJUnit.assertNull; @@ -40,7 +37,7 @@ import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; import org.testng.annotations.Test; -@Test(groups = "unit") +@Test(groups = "unit", testName = "BucketApiExpectTest") public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { private static final String EXPECTED_TEST_BUCKET = "bhashbucket"; @@ -103,7 +100,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { // Test listBucket without options public void testListBucketWithNoOptionsResponseIs2xx() throws Exception { - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READONLY_SCOPE), TOKEN_RESPONSE, LIST_BUCKET_REQUEST, LIST_BUCKET_RESPONSE).getBucketApi(); assertEquals(api.listBucket(EXPECTED_TEST_PROJECT_NUMBER), new NoAclBucketListTest().expected()); @@ -112,7 +109,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { public void testListBucketWithOptionsResponseIs2xx() throws Exception { - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READONLY_SCOPE), TOKEN_RESPONSE, LIST_BUCKET_REQUEST_WITHOPTIONS, LIST_BUCKET_RESPONSE).getBucketApi(); ListOptions options = new ListOptions().maxResults(2).pageToken("jcloudtestbucket500"); @@ -124,7 +121,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { public void testListBucketResponseIs4xx() throws Exception { HttpResponse listResponse = HttpResponse.builder().statusCode(404).build(); - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READONLY_SCOPE), TOKEN_RESPONSE, LIST_BUCKET_REQUEST, listResponse).getBucketApi(); assertTrue(api.listBucket(EXPECTED_TEST_PROJECT_NUMBER).isEmpty()); @@ -143,7 +140,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { .payload(payloadFromResourceWithContentType("/bucket_insert_request_payload.json", MediaType.APPLICATION_JSON)).build(); - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READWRITE_SCOPE), TOKEN_RESPONSE, createRequest, BUCKET_RESPONSE).getBucketApi(); BucketTemplate template = new BucketTemplate().name("bhashbucket"); @@ -171,7 +168,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { HttpResponse updateResponse = HttpResponse.builder().statusCode(200) .payload(staticPayloadFromResource("/bucket_update_response.json")).build(); - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READWRITE_SCOPE), TOKEN_RESPONSE, updateRequest, updateResponse).getBucketApi(); assertEquals(api.updateBucket(EXPECTED_TEST_BUCKET, template), new BucketUpdateTest().expected()); @@ -199,7 +196,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { HttpResponse updateResponse = HttpResponse.builder().statusCode(200) .payload(staticPayloadFromResource("/bucket_update_response.json")).build(); - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READWRITE_SCOPE), TOKEN_RESPONSE, updateRequest, updateResponse).getBucketApi(); assertEquals(api.updateBucket(EXPECTED_TEST_BUCKET, template, options), new BucketUpdateTest().expected()); @@ -224,7 +221,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { HttpResponse patchResponse = HttpResponse.builder().statusCode(200) .payload(staticPayloadFromResource("/bucket_update_response.json")).build(); - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, patchRequest, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READWRITE_SCOPE), TOKEN_RESPONSE, patchRequest, patchResponse).getBucketApi(); assertEquals(api.patchBucket(EXPECTED_TEST_BUCKET, template), new BucketUpdateTest().expected()); @@ -252,7 +249,7 @@ public class BucketApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { HttpResponse patchResponse = HttpResponse.builder().statusCode(200) .payload(staticPayloadFromResource("/bucket_update_response.json")).build(); - BucketApi api = requestsSendResponses(requestForScopes(STORAGE_FULLCONTROL_SCOPE), TOKEN_RESPONSE, patchRequest, + BucketApi api = requestsSendResponses(requestForScopes(STORAGE_READWRITE_SCOPE), TOKEN_RESPONSE, patchRequest, patchResponse).getBucketApi(); assertEquals(api.updateBucket(EXPECTED_TEST_BUCKET, template, options), new BucketUpdateTest().expected()); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiLiveTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiLiveTest.java index c0ca7c6..01c039e 100644 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiLiveTest.java +++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/BucketApiLiveTest.java @@ -31,10 +31,10 @@ import org.jclouds.googlecloudstorage.domain.Bucket.Cors; import org.jclouds.googlecloudstorage.domain.Bucket.Logging; import org.jclouds.googlecloudstorage.domain.Bucket.Versioning; import org.jclouds.googlecloudstorage.domain.BucketAccessControls; +import org.jclouds.googlecloudstorage.domain.BucketAccessControls.Role; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Location; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Projection; -import org.jclouds.googlecloudstorage.domain.BucketAccessControls.Role; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass; import org.jclouds.googlecloudstorage.domain.ListPage; import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApiExpectTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApiExpectTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApiExpectTest.java index 15bd44f..acc7093 100644 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApiExpectTest.java +++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApiExpectTest.java @@ -17,7 +17,6 @@ package org.jclouds.googlecloudstorage.features; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; import static org.testng.Assert.assertEquals; import static org.testng.AssertJUnit.assertNull; @@ -34,7 +33,7 @@ import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; import org.testng.annotations.Test; -@Test(groups = "unit") +@Test(groups = "unit", testName = "DefaultObjectAccessControlsApiExpectTest") public class DefaultObjectAccessControlsApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { private static final String EXPECTED_TEST_BUCKET = "jcloudtestbucket"; http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApiExpectTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApiExpectTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApiExpectTest.java index 2c7562b..2a6e5cf 100644 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApiExpectTest.java +++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectAccessControlsApiExpectTest.java @@ -18,7 +18,6 @@ package org.jclouds.googlecloudstorage.features; import static org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole.OWNER; -import static org.jclouds.googlecloudstorage.reference.GoogleCloudStorageConstants.STORAGE_FULLCONTROL_SCOPE; import static org.testng.Assert.assertEquals; import static org.testng.AssertJUnit.assertNull; @@ -34,7 +33,7 @@ import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; import org.testng.annotations.Test; -@Test(groups = "unit") +@Test(groups = "unit", testName = "ObjectAccessControlsApiExpectTest") public class ObjectAccessControlsApiExpectTest extends BaseGoogleCloudStorageApiExpectTest { private static final String EXPECTED_TEST_BUCKET = "jcloudtestbucket"; http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java index d0976c7..40e26cd 100644 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java +++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java @@ -46,7 +46,9 @@ import java.util.concurrent.atomic.AtomicInteger; import javax.ws.rs.core.MediaType; +import org.jclouds.apis.ApiMetadata; import org.jclouds.crypto.Crypto; +import org.jclouds.googlecloudstorage.GoogleCloudStorageApiMetadata; import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; import org.jclouds.io.Payload; @@ -65,6 +67,11 @@ import com.google.inject.Module; import com.google.inject.TypeLiteral; public class BaseGoogleCloudStorageExpectTest<T> extends BaseRestApiExpectTest<T> { + protected static final String STORAGE_READONLY_SCOPE = "https://www.googleapis.com/auth/devstorage.read_only"; + + protected static final String STORAGE_READWRITE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; + + protected static final String STORAGE_FULLCONTROL_SCOPE = "https://www.googleapis.com/auth/devstorage.full_control"; private static final String header = "{\"alg\":\"none\",\"typ\":\"JWT\"}"; @@ -87,7 +94,6 @@ public class BaseGoogleCloudStorageExpectTest<T> extends BaseRestApiExpectTest<T @Override protected Module createModule() { - return new Module() { @Override public void configure(Binder binder) { @@ -129,7 +135,6 @@ public class BaseGoogleCloudStorageExpectTest<T> extends BaseRestApiExpectTest<T }); } }; - } @Override @@ -140,6 +145,10 @@ public class BaseGoogleCloudStorageExpectTest<T> extends BaseRestApiExpectTest<T return props; } + @Override protected ApiMetadata createApiMetadata(){ + return new GoogleCloudStorageApiMetadata(); + } + @Override protected HttpRequestComparisonType compareHttpRequestAsType(HttpRequest input) { HttpRequestComparisonType reqType = HttpRequestComparisonType.DEFAULT; @@ -168,5 +177,4 @@ public class BaseGoogleCloudStorageExpectTest<T> extends BaseRestApiExpectTest<T protected Payload staticPayloadFromResource(String resource) { return new ByteSourcePayload(Resources.asByteSource(Resources.getResource(getClass(), resource))); } - } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/Resources.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/Resources.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/Resources.java index 34ddd50..8ddfec9 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/Resources.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/Resources.java @@ -18,8 +18,6 @@ package org.jclouds.googlecomputeengine.compute.functions; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import static org.jclouds.Fallbacks.NullOnNotFoundOr404; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_READONLY_SCOPE; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_SCOPE; import java.net.URI; @@ -34,7 +32,6 @@ import org.jclouds.googlecomputeengine.domain.Instance; import org.jclouds.googlecomputeengine.domain.Network; import org.jclouds.googlecomputeengine.domain.Operation; 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.EndpointParam; import org.jclouds.rest.annotations.Fallback; @@ -49,30 +46,26 @@ public interface Resources { /** Returns an instance by self-link or null if not found. */ @Named("Instances:get") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Instance instance(@EndpointParam URI selfLink); /** Returns an network by self-link or null if not found. */ @Named("Networks:get") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Network network(@EndpointParam URI selfLink); /** Returns an operation by self-link or null if not found. */ @Named("Operations:get") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Operation operation(@EndpointParam URI selfLink); /** Deletes any resource by self-link and returns the operation in progress, or null if not found. */ @Named("Resources:delete") @DELETE - @OAuthScopes(COMPUTE_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Operation delete(@EndpointParam URI selfLink); /** Hard-resets the instance by self-link and returns the operation in progres */ @Named("Instances:reset") @POST @Path("/reset") - @OAuthScopes(COMPUTE_SCOPE) Operation resetInstance(@EndpointParam URI selfLink); + Operation resetInstance(@EndpointParam URI selfLink); } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineHttpApiModule.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineHttpApiModule.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineHttpApiModule.java index d37c162..b89fd92 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineHttpApiModule.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineHttpApiModule.java @@ -22,7 +22,6 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL; import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineProperties.PROJECT_NAME; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_READONLY_SCOPE; import static org.jclouds.rest.config.BinderUtils.bindHttpApi; import java.net.URI; @@ -48,6 +47,7 @@ import org.jclouds.http.annotation.Redirection; import org.jclouds.http.annotation.ServerError; import org.jclouds.location.Provider; import org.jclouds.oauth.v2.config.OAuthScopes; +import org.jclouds.oauth.v2.config.OAuthScopes.ReadOrWriteScopes; import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter; import org.jclouds.providers.ProviderMetadata; import org.jclouds.rest.AuthorizationException; @@ -65,12 +65,14 @@ import com.google.inject.Provides; @ConfiguresHttpApi public final class GoogleComputeEngineHttpApiModule extends HttpApiModule<GoogleComputeEngineApi> { - public GoogleComputeEngineHttpApiModule() { - } @Override protected void configure() { super.configure(); bindHttpApi(binder(), UseApiToResolveProjectName.GetProject.class); + bind(OAuthScopes.class).toInstance(ReadOrWriteScopes.create( // + "https://www.googleapis.com/auth/compute.readonly", // + "https://www.googleapis.com/auth/compute" // + )); } @Override protected void bindErrorHandlers() { @@ -118,7 +120,6 @@ public final class GoogleComputeEngineHttpApiModule extends HttpApiModule<Google @SkipEncoding({ '/', '=' }) @RequestFilters(OAuthAuthenticationFilter.class) - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Consumes(APPLICATION_JSON) interface GetProject { @Named("Projects:get") http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineScopes.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineScopes.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineScopes.java deleted file mode 100644 index 7f5eaae..0000000 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/GoogleComputeEngineScopes.java +++ /dev/null @@ -1,28 +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.googlecomputeengine.config; - -/** OAuth scopes needed for requests. */ -public final class GoogleComputeEngineScopes { - - public static final String COMPUTE_SCOPE = "https://www.googleapis.com/auth/compute"; - - public static final String COMPUTE_READONLY_SCOPE = "https://www.googleapis.com/auth/compute.readonly"; - - private GoogleComputeEngineScopes() { - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java index 1beef9f..8ecc1c4 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java @@ -17,8 +17,6 @@ package org.jclouds.googlecomputeengine.features; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_READONLY_SCOPE; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_SCOPE; import java.util.Iterator; @@ -41,7 +39,6 @@ import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.internal.BaseCallerArg0ToIteratorOfListPage; import org.jclouds.googlecomputeengine.options.ListOptions; 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.Fallback; import org.jclouds.rest.annotations.MapBinder; @@ -63,7 +60,6 @@ public interface AddressApi { @Named("Addresses:get") @GET @Path("/{address}") - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Address get(@PathParam("address") String address); @@ -78,7 +74,6 @@ public interface AddressApi { @Named("Addresses:insert") @POST @Produces(APPLICATION_JSON) - @OAuthScopes(COMPUTE_SCOPE) @MapBinder(BindToJsonPayload.class) Operation create(@PayloadParam("name") String address); @@ -86,7 +81,6 @@ public interface AddressApi { @Named("Addresses:delete") @DELETE @Path("/{address}") - @OAuthScopes(COMPUTE_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Operation delete(@PathParam("address") String address); @@ -102,20 +96,17 @@ public interface AddressApi { */ @Named("Addresses:list") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) ListPage<Address> listPage(@Nullable @QueryParam("pageToken") String pageToken, ListOptions listOptions); /** @see #listPage(String, ListOptions) */ @Named("Addresses:list") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Transform(AddressPages.class) Iterator<ListPage<Address>> list(); /** @see #listPage(String, ListOptions) */ @Named("Addresses:list") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Transform(AddressPages.class) Iterator<ListPage<Address>> list(ListOptions options); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AggregatedListApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AggregatedListApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AggregatedListApi.java index 3386231..86232b4 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AggregatedListApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AggregatedListApi.java @@ -17,7 +17,6 @@ package org.jclouds.googlecomputeengine.features; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_READONLY_SCOPE; import java.util.Iterator; @@ -35,7 +34,6 @@ import org.jclouds.googlecomputeengine.domain.MachineType; import org.jclouds.googlecomputeengine.internal.BaseToIteratorOfListPage; import org.jclouds.googlecomputeengine.options.ListOptions; 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.RequestFilters; import org.jclouds.rest.annotations.SkipEncoding; @@ -47,7 +45,6 @@ import com.google.common.base.Function; @RequestFilters(OAuthAuthenticationFilter.class) @Path("/aggregated") @Consumes(APPLICATION_JSON) -@OAuthScopes(COMPUTE_READONLY_SCOPE) public interface AggregatedListApi { /** http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/62766701/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java ---------------------------------------------------------------------- diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java index 9934d22..132937f 100644 --- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java +++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java @@ -17,8 +17,6 @@ package org.jclouds.googlecomputeengine.features; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_READONLY_SCOPE; -import static org.jclouds.googlecomputeengine.config.GoogleComputeEngineScopes.COMPUTE_SCOPE; import java.util.Iterator; @@ -43,7 +41,6 @@ import org.jclouds.googlecomputeengine.internal.BaseCallerArg0ToIteratorOfListPa import org.jclouds.googlecomputeengine.options.DiskCreationOptions; import org.jclouds.googlecomputeengine.options.ListOptions; 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.Fallback; import org.jclouds.rest.annotations.MapBinder; @@ -65,7 +62,6 @@ public interface DiskApi { @Named("Disks:get") @GET @Path("/{disk}") - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Disk get(@PathParam("disk") String disk); @@ -81,7 +77,6 @@ public interface DiskApi { @Named("Disks:insert") @POST @Produces(APPLICATION_JSON) - @OAuthScopes(COMPUTE_SCOPE) @MapBinder(BindToJsonPayload.class) Operation create(@PayloadParam("name") String diskName, @PayloadParam("sizeGb") int sizeGb); @@ -97,7 +92,6 @@ public interface DiskApi { @Named("Disks:insert") @POST @Produces(APPLICATION_JSON) - @OAuthScopes(COMPUTE_SCOPE) @MapBinder(DiskCreationBinder.class) Operation create(@PayloadParam("name") String diskName, @PayloadParam("sizeGb") int sizeGb, @@ -107,7 +101,6 @@ public interface DiskApi { @Named("Disks:delete") @DELETE @Path("/{disk}") - @OAuthScopes(COMPUTE_SCOPE) @Fallback(NullOnNotFoundOr404.class) @Nullable Operation delete(@PathParam("disk") String disk); @@ -124,7 +117,6 @@ public interface DiskApi { @Named("Disks:createSnapshot") @POST @Path("/{disk}/createSnapshot") - @OAuthScopes(COMPUTE_SCOPE) @MapBinder(BindToJsonPayload.class) Operation createSnapshot(@PathParam("disk") String diskName, @PayloadParam("name") String snapshotName); @@ -139,20 +131,17 @@ public interface DiskApi { */ @Named("Disks:list") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) ListPage<Disk> listPage(@Nullable @QueryParam("pageToken") String pageToken, ListOptions listOptions); /** @see #listPage(String, ListOptions) */ @Named("Disks:list") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Transform(DiskPages.class) Iterator<ListPage<Disk>> list(); /** @see #listPage(String, ListOptions) */ @Named("Disks:list") @GET - @OAuthScopes(COMPUTE_READONLY_SCOPE) @Transform(DiskPages.class) Iterator<ListPage<Disk>> list(ListOptions options);
