Use AutoValue to reduce bulk of Google Storage value types.
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/b8670b16 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/b8670b16 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/b8670b16 Branch: refs/heads/master Commit: b8670b16e3793fb17255381faee6608d694c387a Parents: cca44c2 Author: Adrian Cole <[email protected]> Authored: Tue Oct 28 22:10:34 2014 -0700 Committer: Adrian Cole <[email protected]> Committed: Thu Oct 30 09:40:44 2014 -0700 ---------------------------------------------------------------------- google-cloud-storage/pom.xml | 7 +- .../GoogleCloudStorageApiMetadata.java | 3 + .../binders/MultipartUploadBinder.java | 6 +- .../blobstore/GCSBlobStore.java | 48 +-- .../functions/BlobMetadataToObjectTemplate.java | 7 +- ...ListContainerOptionsToListObjectOptions.java | 5 +- .../functions/BucketToStorageMetadata.java | 10 +- .../functions/ObjectListToStorageMetadata.java | 14 +- .../functions/ObjectToBlobMetadata.java | 57 ++- .../SequentialMultipartUploadStrategy.java | 13 +- .../config/GoogleCloudStorageParserModule.java | 16 +- .../googlecloudstorage/domain/Bucket.java | 321 +++++---------- .../domain/BucketAccessControls.java | 118 ++---- .../domain/DefaultObjectAccessControls.java | 180 --------- .../domain/DomainResourceReferences.java | 4 - .../googlecloudstorage/domain/DomainUtils.java | 38 -- .../googlecloudstorage/domain/GCSObject.java | 392 +++---------------- .../domain/ListBucketAccessControls.java | 112 ------ .../domain/ListDefaultObjectAccessControls.java | 112 ------ .../domain/ListObjectAccessControls.java | 112 ------ .../googlecloudstorage/domain/ListPage.java | 129 +----- .../domain/ObjectAccessControls.java | 152 ++----- .../googlecloudstorage/domain/Owner.java | 34 ++ .../googlecloudstorage/domain/ProjectTeam.java | 55 +++ .../googlecloudstorage/domain/Resource.java | 169 -------- .../domain/ResumableUpload.java | 112 +----- .../domain/internal/Action.java | 90 ----- .../domain/internal/BucketCors.java | 147 ------- .../domain/internal/BucketLifeCycle.java | 102 ----- .../domain/internal/Condition.java | 150 ------- .../domain/internal/Logging.java | 102 ----- .../domain/internal/Owner.java | 99 ----- .../domain/internal/ProjectTeam.java | 116 ------ .../domain/internal/Rule.java | 110 ------ .../domain/internal/Versioning.java | 94 ----- .../domain/internal/Website.java | 102 ----- .../templates/BucketAccessControlsTemplate.java | 48 +-- .../domain/templates/BucketTemplate.java | 99 ++--- .../domain/templates/ComposeObjectTemplate.java | 59 +-- .../DefaultObjectAccessControlsTemplate.java | 65 --- .../templates/ObjectAccessControlsTemplate.java | 46 +-- .../domain/templates/ObjectTemplate.java | 91 ++--- .../features/BucketAccessControlsApi.java | 7 +- .../DefaultObjectAccessControlsApi.java | 51 +-- .../features/ObjectAccessControlsApi.java | 23 +- .../internal/NullSafeCopies.java | 39 ++ .../parser/ParseToResumableUpload.java | 11 +- .../services/org.jclouds.apis.ApiMetadata | 18 - .../BucketAccessControlsApiExpectTest.java | 10 +- .../BucketAccessControlsApiLiveTest.java | 29 +- .../features/BucketApiExpectTest.java | 2 +- .../features/BucketApiLiveTest.java | 81 ++-- ...efaultObjectAccessControlsApiExpectTest.java | 16 +- .../DefaultObjectAccessControlsApiLiveTest.java | 45 +-- .../ObjectAccessControlsApiExpectTest.java | 21 +- .../features/ObjectApiLiveTest.java | 168 ++++---- .../features/ResumableUploadApiLiveTest.java | 47 +-- .../parse/BucketAclGetTest.java | 6 +- .../parse/BucketAclInsertTest.java | 8 +- .../parse/BucketAclListTest.java | 30 +- .../parse/BucketAclUpdateTest.java | 7 +- .../parse/BucketUpdateTest.java | 28 +- .../parse/DefaultObjectAclGetTest.java | 14 +- .../parse/DefaultObjectAclInsertTest.java | 9 +- .../parse/DefaultObjectAclListTest.java | 23 +- .../parse/FullBucketGetTest.java | 54 +-- .../parse/NoAclBucketListTest.java | 33 +- .../parse/NoAclBucketTest.java | 28 +- .../parse/ObjectAclGetTest.java | 11 +- .../parse/ObjectAclInsertTest.java | 7 +- .../parse/ObjectAclListTest.java | 18 +- .../parse/ObjectAclUpdateTest.java | 6 +- oauth/pom.xml | 1 - 73 files changed, 922 insertions(+), 3675 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/pom.xml ---------------------------------------------------------------------- diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index 84351be..7d9fb39 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -60,6 +60,11 @@ <version>${jclouds.version}</version> </dependency> <dependency> + <groupId>com.google.auto.value</groupId> + <artifactId>auto-value</artifactId> + <scope>provided</scope> + </dependency> + <dependency> <groupId>org.apache.jclouds</groupId> <artifactId>jclouds-blobstore</artifactId> <version>${jclouds.version}</version> @@ -136,4 +141,4 @@ </build> </profile> </profiles> -</project> \ No newline at end of file +</project> http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApiMetadata.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApiMetadata.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApiMetadata.java index 67c380f..4cf6a49 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApiMetadata.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApiMetadata.java @@ -27,6 +27,7 @@ import static org.jclouds.reflect.Reflection2.typeToken; import java.net.URI; import java.util.Properties; +import org.jclouds.apis.ApiMetadata; import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.googlecloudstorage.blobstore.config.GCSBlobStoreContextModule; import org.jclouds.googlecloudstorage.config.GoogleCloudStorageHttpApiModule; @@ -35,9 +36,11 @@ import org.jclouds.oauth.v2.config.OAuthAuthenticationModule; import org.jclouds.oauth.v2.config.OAuthModule; import org.jclouds.rest.internal.BaseHttpApiMetadata; +import com.google.auto.service.AutoService; import com.google.common.collect.ImmutableSet; import com.google.inject.Module; +@AutoService(ApiMetadata.class) public class GoogleCloudStorageApiMetadata extends BaseHttpApiMetadata<GoogleCloudStorageApi> { @Override http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/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 f8f1451..dfd4f7e 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 @@ -41,15 +41,15 @@ public class MultipartUploadBinder implements MapBinder { ObjectTemplate template = (ObjectTemplate) postParams.get("template"); Payload payload = (Payload) postParams.get("payload"); - String contentType = checkNotNull(template.getContentType(), "contentType"); - Long length = checkNotNull(template.getSize(), "contentLength"); + String contentType = checkNotNull(template.cacheControl(), "contentType"); + Long length = checkNotNull(template.size(), "contentLength"); StringPayload jsonPayload = Payloads.newStringPayload(new Gson().toJson(template)); payload.getContentMetadata().setContentLength(length); Part jsonPart = Part.create("Metadata", jsonPayload, new Part.PartOptions().contentType(APPLICATION_JSON)); - Part mediaPart = Part.create(template.getName(), payload, new Part.PartOptions().contentType(contentType)); + Part mediaPart = Part.create(template.name(), payload, new Part.PartOptions().contentType(contentType)); MultipartForm compPayload = new MultipartForm(BOUNDARY_HEADER, jsonPart, mediaPart); request.setPayload(compPayload); http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/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 e0d433c..c388857 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 @@ -17,6 +17,7 @@ package org.jclouds.googlecloudstorage.blobstore; import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.io.BaseEncoding.base64; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -27,9 +28,10 @@ import javax.inject.Singleton; import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.BlobMetadata; +import org.jclouds.blobstore.domain.MutableBlobMetadata; import org.jclouds.blobstore.domain.PageSet; import org.jclouds.blobstore.domain.StorageMetadata; -import org.jclouds.blobstore.domain.internal.BlobBuilderImpl; +import org.jclouds.blobstore.domain.internal.BlobImpl; import org.jclouds.blobstore.domain.internal.PageSetImpl; import org.jclouds.blobstore.internal.BaseBlobStore; import org.jclouds.blobstore.options.CreateContainerOptions; @@ -52,11 +54,11 @@ import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole import org.jclouds.googlecloudstorage.domain.GCSObject; import org.jclouds.googlecloudstorage.domain.ListPage; import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate; -import org.jclouds.googlecloudstorage.domain.templates.DefaultObjectAccessControlsTemplate; +import org.jclouds.googlecloudstorage.domain.templates.ObjectAccessControlsTemplate; import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; import org.jclouds.googlecloudstorage.options.ListObjectOptions; import org.jclouds.http.HttpResponseException; -import org.jclouds.http.internal.PayloadEnclosingImpl; +import org.jclouds.io.Payload; import com.google.common.base.Charsets; import com.google.common.base.Function; @@ -137,8 +139,8 @@ public class GCSBlobStore extends BaseBlobStore { Bucket bucket = api.getBucketApi().createBucket(projectId.get(), template); if (options.isPublicRead()) { try { - DefaultObjectAccessControlsTemplate doAclTemplate = new DefaultObjectAccessControlsTemplate().entity( - "allUsers").role(ObjectRole.READER); + ObjectAccessControlsTemplate doAclTemplate = ObjectAccessControlsTemplate + .create("allUsers", ObjectRole.READER); api.getDefaultObjectAccessControlsApi().createDefaultObjectAccessControls(container, doAclTemplate); } catch (HttpResponseException e) { // If DefaultObjectAccessControls operation fail, Reverse create operation the operation. @@ -196,9 +198,9 @@ public class GCSBlobStore extends BaseBlobStore { ObjectTemplate template = blobMetadataToObjectTemplate.apply(blob.getMetadata()); if (md5 != null) { - template.md5Hash(md5); + template.md5Hash(base64().encode(md5.asBytes())); } - return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).getEtag(); + return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).etag(); } @Override @@ -217,24 +219,16 @@ public class GCSBlobStore extends BaseBlobStore { @Override public Blob getBlob(String container, String name, org.jclouds.blobstore.options.GetOptions options) { - PayloadEnclosingImpl impl = api.getObjectApi().download(container, name); - GCSObject gcsObject = api.getObjectApi().getObject(container, name); if (gcsObject == null) { return null; } - Blob blob = new BlobBuilderImpl().payload(impl.getPayload()).payload(impl.getPayload()) - .contentType(gcsObject.getContentType()).contentDisposition(gcsObject.getContentDisposition()) - .contentEncoding(gcsObject.getContentEncoding()).contentLanguage(gcsObject.getContentLanguage()) - .contentLength(gcsObject.getSize()).contentMD5(gcsObject.getMd5HashCode()).name(gcsObject.getName()) - .userMetadata(gcsObject.getAllMetadata()).build(); - blob.getMetadata().setContainer(container); - blob.getMetadata().setLastModified(gcsObject.getUpdated()); - blob.getMetadata().setETag(gcsObject.getEtag()); - blob.getMetadata().setPublicUri(gcsObject.getMediaLink()); - blob.getMetadata().setUserMetadata(gcsObject.getAllMetadata()); - blob.getMetadata().setUri(gcsObject.getSelfLink()); - blob.getMetadata().setId(gcsObject.getId()); + MutableBlobMetadata metadata = objectToBlobMetadata.apply(gcsObject); + Blob blob = new BlobImpl(metadata); + // TODO: Does getObject not get the payload?! + Payload payload = api.getObjectApi().download(container, name).getPayload(); + payload.setContentMetadata(metadata.getContentMetadata()); // Doing this first retains it on setPayload. + blob.setPayload(payload); return blob; } @@ -255,19 +249,9 @@ public class GCSBlobStore extends BaseBlobStore { if (list == null) { return api.getBucketApi().deleteBucket(container); } - if (!list.iterator().hasNext() && list.getPrefixes().isEmpty()) + if (!list.iterator().hasNext() && list.prefixes().isEmpty()) return api.getBucketApi().deleteBucket(container); return false; } - - public Set<String> listPrefixes(String container, ListContainerOptions options) { - ListObjectOptions gcsOptions = listContainerOptionsToListObjectOptions.apply(options); - Set<String> prefixes = api.getObjectApi().listObjects(container, gcsOptions).getPrefixes(); - return prefixes; - } - - public Set<String> listPrefixes(String container) { - return listPrefixes(container, ListContainerOptions.NONE); - } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java index d604f7c..e40ce49 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java @@ -16,9 +16,9 @@ */ package org.jclouds.googlecloudstorage.blobstore.functions; -import java.util.Map; +import static com.google.common.io.BaseEncoding.base64; -import javax.inject.Singleton; +import java.util.Map; import org.jclouds.blobstore.domain.BlobMetadata; import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; @@ -27,7 +27,6 @@ import org.jclouds.io.ContentMetadata; import com.google.common.base.Function; import com.google.common.hash.HashCode; -@Singleton public class BlobMetadataToObjectTemplate implements Function<BlobMetadata, ObjectTemplate> { public ObjectTemplate apply(BlobMetadata from) { @@ -50,7 +49,7 @@ public class BlobMetadataToObjectTemplate implements Function<BlobMetadata, Obje .contentEncoding(contentEncoding).contentLanguage(contentLanguage) .contentDisposition(contentDisposition).name(name).customMetadata(userMeta); if (md5 != null) { - template.md5Hash(md5); + template.md5Hash(base64().encode(md5.asBytes())); } return template; } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java index d4f8ef1..581e9ce 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobStoreListContainerOptionsToListObjectOptions.java @@ -16,14 +16,13 @@ */ package org.jclouds.googlecloudstorage.blobstore.functions; +import static com.google.common.base.Preconditions.checkNotNull; + import org.jclouds.blobstore.options.ListContainerOptions; import org.jclouds.googlecloudstorage.options.ListObjectOptions; import com.google.common.base.Function; -import com.google.inject.Singleton; -import static com.google.common.base.Preconditions.checkNotNull; -@Singleton public class BlobStoreListContainerOptionsToListObjectOptions implements Function<ListContainerOptions, ListObjectOptions> { public ListObjectOptions apply(ListContainerOptions from) { http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BucketToStorageMetadata.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BucketToStorageMetadata.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BucketToStorageMetadata.java index e402c6b..f96462a 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BucketToStorageMetadata.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BucketToStorageMetadata.java @@ -16,6 +16,8 @@ */ package org.jclouds.googlecloudstorage.blobstore.functions; +import javax.inject.Inject; + import org.jclouds.blobstore.domain.MutableStorageMetadata; import org.jclouds.blobstore.domain.StorageMetadata; import org.jclouds.blobstore.domain.StorageType; @@ -25,21 +27,17 @@ import org.jclouds.googlecloudstorage.domain.Bucket; import com.google.common.base.Function; import com.google.common.base.Supplier; -import com.google.inject.Inject; -import com.google.inject.Singleton; -@Singleton public class BucketToStorageMetadata implements Function<Bucket, StorageMetadata> { private Supplier<Location> defaultLocation; - @Inject - BucketToStorageMetadata(Supplier<Location> defaultLocation) { + @Inject BucketToStorageMetadata(Supplier<Location> defaultLocation) { this.defaultLocation = defaultLocation; } public StorageMetadata apply(Bucket from) { MutableStorageMetadata to = new MutableStorageMetadataImpl(); - to.setName(from.getName()); + to.setName(from.name()); to.setLocation(defaultLocation.get()); to.setType(StorageType.CONTAINER); return to; http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java index 341e44e..a5c6f73 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectListToStorageMetadata.java @@ -17,6 +17,9 @@ package org.jclouds.googlecloudstorage.blobstore.functions; import java.util.Map; + +import javax.inject.Inject; + import org.jclouds.blobstore.domain.BlobMetadata; import org.jclouds.blobstore.domain.PageSet; import org.jclouds.blobstore.domain.StorageMetadata; @@ -25,26 +28,21 @@ import org.jclouds.blobstore.domain.internal.PageSetImpl; import org.jclouds.blobstore.domain.internal.StorageMetadataImpl; import org.jclouds.googlecloudstorage.domain.GCSObject; import org.jclouds.googlecloudstorage.domain.ListPage; -import org.jclouds.googlecloudstorage.domain.Resource.Kind; import com.google.common.base.Function; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; -import com.google.inject.Inject; -import com.google.inject.Singleton; -@Singleton public class ObjectListToStorageMetadata implements Function<ListPage<GCSObject>, PageSet<? extends StorageMetadata>> { private final ObjectToBlobMetadata object2blobMd; - @Inject - public ObjectListToStorageMetadata(ObjectToBlobMetadata object2blobMd) { + @Inject public ObjectListToStorageMetadata(ObjectToBlobMetadata object2blobMd) { this.object2blobMd = object2blobMd; } public PageSet<? extends StorageMetadata> apply(ListPage<GCSObject> from) { if (from == null) { - from = ListPage.<GCSObject> builder().kind(Kind.OBJECTS).build(); + from = ListPage.create(null, null, null); } return new PageSetImpl<StorageMetadata>(Iterables.transform(Iterables.transform(from, object2blobMd), @@ -59,7 +57,7 @@ public class ObjectListToStorageMetadata implements Function<ListPage<GCSObject> } return input; } - }), from.getNextPageToken()); + }), from.nextPageToken()); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectToBlobMetadata.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectToBlobMetadata.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectToBlobMetadata.java index ced893a..8515b3f 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectToBlobMetadata.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/ObjectToBlobMetadata.java @@ -16,56 +16,45 @@ */ package org.jclouds.googlecloudstorage.blobstore.functions; -import java.util.Map; - import javax.inject.Inject; -import javax.inject.Singleton; import org.jclouds.blobstore.domain.MutableBlobMetadata; import org.jclouds.blobstore.domain.StorageType; import org.jclouds.blobstore.domain.internal.MutableBlobMetadataImpl; import org.jclouds.blobstore.strategy.IfDirectoryReturnNameStrategy; import org.jclouds.googlecloudstorage.domain.GCSObject; +import org.jclouds.javax.annotation.Nullable; + import com.google.common.base.Function; -import com.google.common.collect.ImmutableMap; +import com.google.common.hash.HashCode; +import com.google.common.io.BaseEncoding; -@Singleton public class ObjectToBlobMetadata implements Function<GCSObject, MutableBlobMetadata> { private final IfDirectoryReturnNameStrategy ifDirectoryReturnName; - @Inject - public ObjectToBlobMetadata(IfDirectoryReturnNameStrategy ifDirectoryReturnName) { + @Inject public ObjectToBlobMetadata(IfDirectoryReturnNameStrategy ifDirectoryReturnName) { this.ifDirectoryReturnName = ifDirectoryReturnName; } public MutableBlobMetadata apply(GCSObject from) { - if (from == null) + if (from == null) { return null; + } MutableBlobMetadata to = new MutableBlobMetadataImpl(); - - if (from.getMd5HashCode() != null) - to.getContentMetadata().setContentMD5(from.getMd5HashCode()); - if (from.getContentType() != null) - to.getContentMetadata().setContentType(from.getContentType()); - if (from.getContentDisposition() != null) - to.getContentMetadata().setContentDisposition(from.getContentDisposition()); - if (from.getContentEncoding() != null) - to.getContentMetadata().setContentEncoding(from.getContentEncoding()); - if (from.getContentLanguage() != null) - to.getContentMetadata().setContentLanguage(from.getContentLanguage()); - if (from.getSize() != null) - to.getContentMetadata().setContentLength(from.getSize()); - if (from.getUpdated() != null) - to.setLastModified(from.getUpdated()); - to.setContainer(from.getBucket()); - Map<String, String> userMeta = from.getAllMetadata() == null ? ImmutableMap.<String, String> of() : from - .getAllMetadata(); - to.setUserMetadata(userMeta); - to.setETag(from.getEtag()); - to.setName(from.getName()); - to.setUri(from.getSelfLink()); - to.setId(from.getId()); - to.setPublicUri(from.getMediaLink()); + to.getContentMetadata().setContentMD5(toHashCode(from.md5Hash())); + to.getContentMetadata().setContentType(from.contentType()); + to.getContentMetadata().setContentDisposition(from.contentDisposition()); + to.getContentMetadata().setContentEncoding(from.contentEncoding()); + to.getContentMetadata().setContentLanguage(from.contentLanguage()); + to.getContentMetadata().setContentLength(from.size()); + to.setLastModified(from.updated()); + to.setContainer(from.bucket()); + to.setUserMetadata(from.metadata()); + to.setETag(from.etag()); + to.setName(from.name()); + to.setUri(from.selfLink()); + to.setId(from.id()); + to.setPublicUri(from.mediaLink()); String directoryName = ifDirectoryReturnName.execute(to); if (directoryName != null) { @@ -76,4 +65,8 @@ public class ObjectToBlobMetadata implements Function<GCSObject, MutableBlobMeta } return to; } + + private static HashCode toHashCode(@Nullable String hashCode) { + return hashCode == null ? null : HashCode.fromBytes(BaseEncoding.base64().decode(hashCode)); + } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java index fb9d049..c244f5c 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java @@ -18,7 +18,7 @@ package org.jclouds.googlecloudstorage.blobstore.strategy.internal; import static com.google.common.base.Preconditions.checkNotNull; -import java.util.Set; +import java.util.List; import javax.annotation.Resource; import javax.inject.Named; @@ -36,7 +36,7 @@ import org.jclouds.io.Payload; import org.jclouds.io.PayloadSlicer; import org.jclouds.logging.Logger; -import com.google.common.collect.Sets; +import com.google.common.collect.Lists; import com.google.inject.Inject; public class SequentialMultipartUploadStrategy extends MultipartUploadStrategy { @@ -68,9 +68,8 @@ public class SequentialMultipartUploadStrategy extends MultipartUploadStrategy { public String execute(String container, Blob blob) { ObjectTemplate destination = blob2ObjectTemplate.apply(blob.getMetadata()); - ComposeObjectTemplate template = new ComposeObjectTemplate().destination(destination); - Set<GCSObject> sourceList = Sets.newLinkedHashSet(); + List<GCSObject> sourceList = Lists.newArrayList(); String key = blob.getMetadata().getName(); Payload payload = blob.getPayload(); @@ -95,12 +94,12 @@ public class SequentialMultipartUploadStrategy extends MultipartUploadStrategy { blob2ObjectTemplate.apply(blobPart.getMetadata()), blobPart.getPayload()); sourceList.add(object); } - template = template.sourceObjects(sourceList); - return api.getObjectApi().composeObjects(container, key, template).getEtag(); + ComposeObjectTemplate template = ComposeObjectTemplate.create(sourceList, destination); + return api.getObjectApi().composeObjects(container, key, template).etag(); } else { return api.getObjectApi() .multipartUpload(container, blob2ObjectTemplate.apply(blob.getMetadata()), blob.getPayload()) - .getEtag(); + .etag(); } } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageParserModule.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageParserModule.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageParserModule.java index 6ae9278..e2639ff 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageParserModule.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/GoogleCloudStorageParserModule.java @@ -59,16 +59,16 @@ public class GoogleCloudStorageParserModule extends AbstractModule { JsonObject bucketTemplate = (JsonObject) context.serialize(template, BucketTemplateInternal.class); // deal with bucketAccessControls - if (!(src.getAcl() == null) && (src.getAcl().isEmpty())) { + if (!(src.acl() == null) && (src.acl().isEmpty())) { bucketTemplate.add("acl", null); } // deal with DefaultObjectAccessControls - if (!(src.getDefaultObjectAccessControls() == null) && (src.getDefaultObjectAccessControls().isEmpty())) { + if (!(src.defaultObjectAccessControls() == null) && (src.defaultObjectAccessControls().isEmpty())) { bucketTemplate.add("defaultObjectAccessControls", null); } // deal with Cors - if (!(src.getCors() == null) && (src.getCors().isEmpty())) { + if (!(src.cors() == null) && (src.cors().isEmpty())) { bucketTemplate.add("cors", null); } @@ -77,11 +77,11 @@ public class GoogleCloudStorageParserModule extends AbstractModule { private static class BucketTemplateInternal extends BucketTemplate { private BucketTemplateInternal(BucketTemplate template) { - name(template.getName()).projectNumber(template.getProjectNumber()).acl(template.getAcl()) - .defaultObjectAccessControls(template.getDefaultObjectAccessControls()).owner(template.getOwner()) - .location(template.getLocation()).website(template.getWebsite()).logging(template.getLogging()) - .versioning(template.getVersioning()).cors(template.getCors()).lifeCycle(template.getLifeCycle()) - .storageClass(template.getStorageClass()); + name(template.name()).projectNumber(template.projectNumber()).acl(template.acl()) + .defaultObjectAccessControls(template.defaultObjectAccessControls()).owner(template.owner()) + .location(template.location()).website(template.website()).logging(template.logging()) + .versioning(template.versioning()).cors(template.cors()).lifeCycle(template.lifeCycle()) + .storageClass(template.storageClass()); } } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/Bucket.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/Bucket.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/Bucket.java index d80a99e..1c8e41a 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/Bucket.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/Bucket.java @@ -17,282 +17,165 @@ package org.jclouds.googlecloudstorage.domain; -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.googlecloudstorage.internal.NullSafeCopies.copyOf; -import java.net.URI; import java.util.Date; -import java.util.Set; +import java.util.List; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Location; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass; -import org.jclouds.googlecloudstorage.domain.internal.BucketCors; -import org.jclouds.googlecloudstorage.domain.internal.BucketLifeCycle; -import org.jclouds.googlecloudstorage.domain.internal.Logging; -import org.jclouds.googlecloudstorage.domain.internal.Owner; -import org.jclouds.googlecloudstorage.domain.internal.Versioning; -import org.jclouds.googlecloudstorage.domain.internal.Website; - import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableSet; +import com.google.auto.value.AutoValue; /** * The Bucket represents a bucket in Google Cloud Storage. There is a single global namespace shared by all buckets. - * + * * @see <a href = " https://developers.google.com/storage/docs/json_api/v1/buckets"/> */ -public class Bucket extends Resource { - - private final String name; - private final Long projectNumber; - private final Date timeCreated; - private final Long metageneration; - private final Set<BucketAccessControls> acl; - private final Set<DefaultObjectAccessControls> defaultObjectAcl; - private final Owner owner; - private final Location location; - private final Website website; - private final Logging logging; - private final Versioning versioning; - private final Set<BucketCors> cors; - private final BucketLifeCycle lifeCycle; - private final StorageClass storageClass; - - private Bucket(String id, URI selfLink, String name, String etag, @Nullable Long projectNumber, Date timeCreated, - Long metageneration, Set<BucketAccessControls> acl, Set<DefaultObjectAccessControls> defaultObjectAcl, - Owner owner, @Nullable Location location, @Nullable Website website, @Nullable Logging logging, - @Nullable Versioning versioning, Set<BucketCors> cors, @Nullable BucketLifeCycle lifeCycle, - @Nullable StorageClass storageClass) { - - super(Kind.BUCKET, id, selfLink, etag); - this.projectNumber = projectNumber; - this.timeCreated = checkNotNull(timeCreated, "timeCreated"); - this.metageneration = checkNotNull(metageneration, "metageneration"); - this.acl = acl.isEmpty() ? null : acl; - this.defaultObjectAcl = defaultObjectAcl.isEmpty() ? null : defaultObjectAcl; - this.owner = checkNotNull(owner, "Owner"); - this.location = location; - this.website = website; - this.logging = logging; - this.versioning = versioning; - this.cors = cors.isEmpty() ? null : cors; - this.lifeCycle = lifeCycle; - this.storageClass = storageClass; - this.name = checkNotNull(name, "name"); - } +@AutoValue +public abstract class Bucket { + @AutoValue + public abstract static class Cors { + public abstract List<String> origin(); - public Long getProjectNumber() { - return projectNumber; - } + public abstract List<String> method(); - public String getName() { - return name; - } + public abstract List<String> responseHeader(); - public Date getTimeCreated() { - return timeCreated; - } + public abstract Integer maxAgeSeconds(); - public Long getMetageneration() { - return metageneration; + @SerializedNames({ "origin", "method", "responseHeader", "maxAgeSeconds" }) + public static Cors create(List<String> origin, List<String> method, List<String> responseHeader, + Integer maxAgeSeconds) { + return new AutoValue_Bucket_Cors(copyOf(origin), copyOf(method), copyOf(responseHeader), maxAgeSeconds); + } } - public Set<BucketAccessControls> getAcl() { - return acl; - } + @AutoValue + public abstract static class Logging { + public abstract String logBucket(); - public Set<DefaultObjectAccessControls> getDefaultObjectAcl() { - return defaultObjectAcl; - } + @Nullable public abstract String logObjectPrefix(); - public Owner getOwner() { - return owner; + @SerializedNames({ "logBucket", "logObjectPrefix" }) + public static Logging create(String logBucket, String logObjectPrefix) { + return new AutoValue_Bucket_Logging(logBucket, logObjectPrefix); + } } - public Location getLocation() { - return location; - } + @AutoValue + public abstract static class LifeCycle { - public Website getWebsite() { - return website; - } + @AutoValue + public abstract static class Rule { - public Logging getLogging() { - return logging; - } + @AutoValue + public abstract static class Action { + public abstract String type(); - public Versioning getVersioning() { - return versioning; - } + @SerializedNames("type") + public static Action create(String type) { + return new AutoValue_Bucket_LifeCycle_Rule_Action(type); + } + } - public Set<BucketCors> getCors() { - return cors; - } + @AutoValue + public abstract static class Condition { + @Nullable public abstract Integer age(); - public BucketLifeCycle getLifeCycle() { - return lifeCycle; - } + @Nullable public abstract Date createdBefore(); - public StorageClass getStorageClass() { - return storageClass; - } + @Nullable public abstract Boolean isLive(); - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null || getClass() != obj.getClass()) - return false; - Bucket that = Bucket.class.cast(obj); - return equal(this.kind, that.kind) && equal(this.name, that.name) - && equal(this.projectNumber, that.projectNumber); + @Nullable public abstract Integer numNewerVersions(); - } + @SerializedNames({ "age", "createdBefore", "isLive", "numNewerVersions" }) + public static Condition create(Integer age, Date createdBefore, Boolean isLive, Integer numNewerVersions) { + return new AutoValue_Bucket_LifeCycle_Rule_Condition(age, createdBefore, isLive, numNewerVersions); + } + } - protected Objects.ToStringHelper string() { - return super.string().omitNullValues().add("name", name).add("timeCreated", timeCreated) - .add("projectNumber", projectNumber).add("metageneration", metageneration).add("acl", acl) - .add("defaultObjectAcl", defaultObjectAcl).add("owner", owner).add("location", location) - .add("website", website).add("logging", logging).add("versioning", versioning).add("cors", cors) - .add("lifeCycle", lifeCycle).add("storageClass", storageClass); + public abstract Action action(); - } + public abstract Condition condition(); - @Override - public String toString() { - return string().toString(); - } + @SerializedNames({ "action", "condition" }) + public static Rule create(Action action, Condition condition) { + return new AutoValue_Bucket_LifeCycle_Rule(action, condition); + } + } - public static Builder builder() { - return new Builder(); - } + public abstract List<Rule> rules(); - public Builder toBuilder() { - return new Builder().fromBucket(this); + @SerializedNames("rules") + public static LifeCycle create(List<Rule> rules) { + return new AutoValue_Bucket_LifeCycle(copyOf(rules)); + } } - public static final class Builder extends Resource.Builder<Builder> { - - private String name; - private Long projectNumber; - private Date timeCreated; - private Long metageneration; - private ImmutableSet.Builder<BucketAccessControls> acl = ImmutableSet.builder(); - private ImmutableSet.Builder<DefaultObjectAccessControls> defaultObjectAcl = ImmutableSet.builder(); - private Owner owner; - private Location location; - private Website website; - private Logging logging; - private Versioning versioning; - private ImmutableSet.Builder<BucketCors> cors = ImmutableSet.builder(); - private BucketLifeCycle lifeCycle; - private StorageClass storageClass; - - public Builder name(String name) { - this.name = name; - return this; - } + @AutoValue + public abstract static class Website { + @Nullable public abstract String mainPageSuffix(); - public Builder projectNumber(Long projectNumber) { - this.projectNumber = projectNumber; - return this; - } + @Nullable public abstract String notFoundPage(); - public Builder timeCreated(Date timeCreated) { - this.timeCreated = timeCreated; - return this; + @SerializedNames({ "mainPageSuffix", "notFoundPage" }) + public static Website create(String mainPageSuffix, String notFoundPage) { + return new AutoValue_Bucket_Website(mainPageSuffix, notFoundPage); } + } - public Builder metageneration(Long metageneration) { - this.metageneration = metageneration; - return this; - } + @AutoValue + public abstract static class Versioning { + public abstract Boolean enabled(); - public Builder owner(Owner owner) { - this.owner = owner; - return this; + @SerializedNames("enabled") + public static Versioning create(Boolean enabled) { + return new AutoValue_Bucket_Versioning(enabled); } + } - public Builder location(Location location) { - this.location = location; - return this; - } + public abstract String id(); - public Builder website(Website website) { - this.website = website; - return this; - } + public abstract String name(); - public Builder logging(Logging logging) { - this.logging = logging; - return this; - } + @Nullable public abstract Long projectNumber(); - public Builder versioning(Versioning versioning) { - this.versioning = versioning; - return this; - } + public abstract Date timeCreated(); - public Builder lifeCycle(BucketLifeCycle lifeCycle) { - this.lifeCycle = lifeCycle; - return this; - } + public abstract Long metageneration(); - public Builder storageClass(StorageClass storageClass) { - this.storageClass = storageClass; - return this; - } + public abstract List<BucketAccessControls> acl(); - public Builder addAcl(BucketAccessControls bucketAccessControls) { - this.acl.add(bucketAccessControls); - return this; - } + public abstract List<ObjectAccessControls> defaultObjectAcl(); - public Builder acl(Set<BucketAccessControls> acl) { - this.acl.addAll(acl); - return this; - } + public abstract Owner owner(); - public Builder addDefaultObjectAcl(DefaultObjectAccessControls defaultObjectAccessControls) { - this.defaultObjectAcl.add(defaultObjectAccessControls); - return this; - } + @Nullable public abstract Location location(); - public Builder defaultObjectAcl(Set<DefaultObjectAccessControls> defaultObjectAcl) { - this.defaultObjectAcl.addAll(defaultObjectAcl); - return this; - } + @Nullable public abstract Website website(); - public Builder addCORS(BucketCors cors) { - this.cors.add(cors); - return this; - } + @Nullable public abstract Logging logging(); - public Builder cors(Set<BucketCors> cors) { - this.cors.addAll(cors); - return this; - } + @Nullable public abstract Versioning versioning(); - @Override - protected Builder self() { - return this; - } + public abstract List<Cors> cors(); - public Bucket build() { - return new Bucket(super.id, super.selfLink, name, super.etag, projectNumber, timeCreated, metageneration, - acl.build(), defaultObjectAcl.build(), owner, location, website, logging, versioning, cors.build(), - lifeCycle, storageClass); - } + @Nullable public abstract LifeCycle lifeCycle(); - public Builder fromBucket(Bucket in) { - return super.fromResource(in).name(in.getName()).projectNumber(in.getProjectNumber()) - .timeCreated(in.getTimeCreated()).metageneration(in.getMetageneration()).acl(in.getAcl()) - .defaultObjectAcl(in.getDefaultObjectAcl()).owner(in.getOwner()).location(in.getLocation()) - .website(in.getWebsite()).logging(in.getLogging()).versioning(in.getVersioning()).cors(in.getCors()) - .lifeCycle(in.getLifeCycle()).storageClass(in.getStorageClass()); - } - } + @Nullable public abstract StorageClass storageClass(); + @SerializedNames( + { "id", "name", "projectNumber", "timeCreated", "metageneration", "acl", "defaultObjectAcl", "owner", + "location", "website", "logging", "versioning", "cors", "lifeCycle", "storageClass" }) + public static Bucket create(String id, String name, Long projectNumber, Date timeCreated, Long metageneration, + List<BucketAccessControls> acl, List<ObjectAccessControls> defaultObjectAcl, Owner owner, + Location location, Website website, Logging logging, Versioning versioning, List<Cors> cors, + LifeCycle lifeCycle, StorageClass storageClass) { + return new AutoValue_Bucket(id, name, projectNumber, timeCreated, metageneration, copyOf(acl), + copyOf(defaultObjectAcl), owner, location, website, logging, versioning, copyOf(cors), lifeCycle, + storageClass); + } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/BucketAccessControls.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/BucketAccessControls.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/BucketAccessControls.java index 6d0d0ed..f6fc12f 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/BucketAccessControls.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/BucketAccessControls.java @@ -16,110 +16,55 @@ */ package org.jclouds.googlecloudstorage.domain; -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.net.URI; - -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Role; -import org.jclouds.googlecloudstorage.domain.internal.ProjectTeam; import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; -import com.google.common.base.Objects; +import com.google.auto.value.AutoValue; /** * Represents a BucketAccessControls Resource * * @see <a href= "https://developers.google.com/storage/docs/json_api/v1/bucketAccessControls" /> */ -public class BucketAccessControls extends Resource { - - private final String bucket; - private final String entity; - private final Role role; - private final String email; - private final String domain; - private final String entityId; - private final ProjectTeam projectTeam; - - private BucketAccessControls(@Nullable String id, @Nullable URI selfLink, @Nullable String etag, String bucket, - String entity, @Nullable String entityId, Role role, @Nullable String email, @Nullable String domain, - @Nullable ProjectTeam projectTeam) { - super(Kind.BUCKET_ACCESS_CONTROL, id == null ? (bucket + "/" + entity) : id, selfLink, etag); - - this.bucket = checkNotNull(bucket, "bucket"); - this.entity = checkNotNull(entity, "entity"); - this.entityId = entityId; - this.role = checkNotNull(role, "role"); - this.email = email; - this.domain = domain; - this.projectTeam = projectTeam; - } +@AutoValue +public abstract class BucketAccessControls { - public String getBucket() { - return bucket; + public enum Role { + READER, WRITER, OWNER } - public String getEntity() { - return entity; - } + public abstract String kind(); - public Role getRole() { - return role; - } + public abstract String id(); - public String getEmail() { - return email; - } + public abstract String bucket(); - public String getDomain() { - return domain; - } + public abstract String entity(); - public String getEntityId() { - return entityId; - } + @Nullable public abstract String entityId(); - public ProjectTeam getProjectTeam() { - return projectTeam; - } + public abstract Role role(); - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null || getClass() != obj.getClass()) - return false; - BucketAccessControls that = BucketAccessControls.class.cast(obj); - return equal(this.kind, that.kind) && equal(this.bucket, that.bucket) && equal(this.entity, that.entity) - && equal(this.id, that.id); - } + @Nullable public abstract String email(); - protected Objects.ToStringHelper string() { - return super.string().omitNullValues().add("bucket", bucket).add("entity", entity).add("entityId", entityId) - .add("role", role).add("email", email).add("domain", domain); - } + @Nullable public abstract String domain(); - @Override - public int hashCode() { - return Objects.hashCode(kind, bucket, entity); - } + @Nullable public abstract ProjectTeam projectTeam(); - @Override - public String toString() { - return string().toString(); + @SerializedNames({ "id", "bucket", "entity", "entityId", "role", "email", "domain", "projectTeam" }) + public static BucketAccessControls create(String id, String bucket, String entity, String entityId, Role role, + String email, String domain, ProjectTeam projectTeam) { + return new AutoValue_BucketAccessControls("storage#bucketAccessControl", + id == null ? (bucket + "/" + entity) : id, bucket, entity, entityId, role, email, domain, projectTeam); } public static Builder builder() { return new Builder(); } - public Builder toBuilder() { - return new Builder().fromBucketACL(this); - } - - public static final class Builder extends Resource.Builder<Builder> { + public static final class Builder { + private String id; private String bucket; private String entity; private String entityId; @@ -128,6 +73,11 @@ public class BucketAccessControls extends Resource { private String domain; private ProjectTeam projectTeam; + public Builder id(String id) { + this.id = id; + return this; + } + public Builder bucket(String bucket) { this.bucket = bucket; return this; @@ -164,19 +114,7 @@ public class BucketAccessControls extends Resource { } public BucketAccessControls build() { - return new BucketAccessControls(super.id, super.selfLink, super.etag, bucket, entity, entityId, role, email, - domain, projectTeam); - } - - public Builder fromBucketACL(BucketAccessControls bACL) { - return super.fromResource(bACL).bucket(bACL.getBucket()).entity(bACL.getEntity()).entityId(bACL.getEntityId()) - .role(bACL.getRole()).email(bACL.getEmail()).domain(bACL.getDomain()) - .projectTeam(bACL.getProjectTeam()); - } - - @Override - protected Builder self() { - return this; + return BucketAccessControls.create(id, bucket, entity, entityId, role, email, domain, projectTeam); } } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DefaultObjectAccessControls.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DefaultObjectAccessControls.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DefaultObjectAccessControls.java deleted file mode 100644 index aeddc41..0000000 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DefaultObjectAccessControls.java +++ /dev/null @@ -1,180 +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.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.net.URI; - -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole; -import org.jclouds.googlecloudstorage.domain.internal.ProjectTeam; -import org.jclouds.javax.annotation.Nullable; - -import com.google.common.base.Objects; - -/** - * Represents a DefaultObjectAccessControls Resource - * - * @see <a href= "https://developers.google.com/storage/docs/json_api/v1/defaultObjectAccessControls"/> - */ -public class DefaultObjectAccessControls extends Resource { - - private final String bucket; - private final String entity; - private final ObjectRole role; - private final String email; - private final String entityId; - private final String domain; - private final ProjectTeam projectTeam; - - private DefaultObjectAccessControls(@Nullable String id, @Nullable URI selfLink, @Nullable String etag, - @Nullable String bucket, String entity, @Nullable String entityId, ObjectRole role, @Nullable String email, - @Nullable String domain, @Nullable ProjectTeam projectTeam) { - super(Kind.OBJECT_ACCESS_CONTROL, id, selfLink, etag); - - this.bucket = bucket; - this.entity = checkNotNull(entity, "entity"); - this.entityId = entityId; - this.role = checkNotNull(role, "role"); - this.email = email; - this.domain = domain; - this.projectTeam = projectTeam; - } - - public String getBucket() { - return bucket; - } - - public String getEntity() { - return entity; - } - - public ObjectRole getRole() { - return role; - } - - public String getEmail() { - return email; - } - - public String getDomain() { - return domain; - } - - public String getEntityId() { - return entityId; - } - - public ProjectTeam getProjectTeam() { - return projectTeam; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null || getClass() != obj.getClass()) - return false; - DefaultObjectAccessControls that = DefaultObjectAccessControls.class.cast(obj); - return equal(this.kind, that.kind) && equal(this.entity, that.entity) && equal(this.role, that.role); - } - - protected Objects.ToStringHelper string() { - return super.string().omitNullValues().add("bucket", bucket).add("entity", entity).add("entityId", entityId) - .add("role", role).add("email", email).add("domain", domain); - } - - @Override - public int hashCode() { - return Objects.hashCode(kind, entity); - } - - @Override - public String toString() { - return string().toString(); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return new Builder().fromObjectAccessControls(this); - } - - public static final class Builder extends Resource.Builder<Builder> { - - private String bucket; - private String entity; - private String entityId; - private ObjectRole role; - private String email; - private String domain; - private ProjectTeam projectTeam; - - public Builder bucket(String bucket) { - this.bucket = bucket; - return this; - } - - public Builder entity(String entity) { - this.entity = entity; - return this; - } - - public Builder entityId(String entityId) { - this.entityId = entityId; - return this; - } - - public Builder role(ObjectRole role) { - this.role = role; - return this; - } - - public Builder email(String email) { - this.email = email; - return this; - } - - public Builder domain(String domain) { - this.domain = domain; - return this; - } - - public Builder projectTeam(ProjectTeam projectTeam) { - this.projectTeam = projectTeam; - return this; - } - - public DefaultObjectAccessControls build() { - return new DefaultObjectAccessControls(super.id, super.selfLink, super.etag, bucket, entity, entityId, role, - email, domain, projectTeam); - } - - public Builder fromObjectAccessControls(DefaultObjectAccessControls in) { - return super.fromResource(in).bucket(in.getBucket()).entity(in.getEntity()).entityId(in.getEntityId()) - .role(in.getRole()).email(in.getEmail()).domain(in.getDomain()).projectTeam(in.getProjectTeam()); - } - - @Override - protected Builder self() { - return this; - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainResourceReferences.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainResourceReferences.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainResourceReferences.java index 272074b..dd8a07b 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainResourceReferences.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainResourceReferences.java @@ -23,10 +23,6 @@ public final class DomainResourceReferences { private DomainResourceReferences() { } - public enum Role { - READER, WRITER, OWNER - } - public enum ObjectRole { READER, OWNER } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainUtils.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainUtils.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainUtils.java deleted file mode 100644 index c175691..0000000 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/DomainUtils.java +++ /dev/null @@ -1,38 +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.domain; - -import java.util.List; - -import com.google.common.collect.Lists; -import com.google.common.primitives.Bytes; - -public final class DomainUtils { - - private DomainUtils() { - } - - public static byte[] reverse(byte[] b) { - List<Byte> hashByte = Bytes.asList(b); - List<Byte> reversedList = Lists.reverse(hashByte); - return Bytes.toArray(reversedList); - } - - public static String generateContentRange(Long lowerLimit, Long upperLimit, Long totalSize) { - return "bytes " + lowerLimit + "-" + upperLimit + "/" + totalSize; - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GCSObject.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GCSObject.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GCSObject.java index 865cd90..7b3fc7f 100644 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GCSObject.java +++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GCSObject.java @@ -17,365 +17,63 @@ package org.jclouds.googlecloudstorage.domain; -import static com.google.common.base.Objects.equal; +import static org.jclouds.googlecloudstorage.internal.NullSafeCopies.copyOf; import java.net.URI; import java.util.Date; +import java.util.List; import java.util.Map; -import java.util.Set; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass; -import org.jclouds.googlecloudstorage.domain.internal.Owner; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.hash.HashCode; -import com.google.common.io.BaseEncoding; +import com.google.auto.value.AutoValue; /** * This class represent an object in a Google Cloud Storage Bucket. * * @see <a href = "https://developers.google.com/storage/docs/json_api/v1/Objects"/> */ -public class GCSObject extends Resource { - - private final String name; - private final String bucket; - private final Long generation; - private final Long metageneration; - private final String contentType; - private final Date updated; - private final Date timeDeleted; - private final StorageClass storageClass; - private final Long size; - private final String md5Hash; - private final URI mediaLink; - private final Map<String, String> metadata; - private final String contentEncoding; - private final String contentDisposition; - private final String contentLanguage; - private final String cacheControl; - private final Set<ObjectAccessControls> acl; - private final Owner owner; - private final String crc32c; - private final Integer componentCount; - - private GCSObject(String id, URI selfLink, String etag, String name, String bucket, Long generation, - Long metageneration, String contentType, Date updated, Date timeDeleted, StorageClass storageClass, - Long size, String md5Hash, URI mediaLink, Map<String, String> metadata, String contentEncoding, - String contentDisposition, String contentLanguage, String cacheControl, Set<ObjectAccessControls> acl, - Owner owner, String crc32c, Integer componentCount) { - super(Kind.OBJECT, id, selfLink, etag); - this.name = name; - this.bucket = bucket; - this.generation = generation; - this.metageneration = metageneration; - this.contentType = contentType; - this.updated = updated; - this.timeDeleted = timeDeleted; - this.storageClass = storageClass; - this.size = size; - this.md5Hash = md5Hash; - this.mediaLink = mediaLink; - this.metadata = (metadata == null) ? ImmutableMap.<String, String> of() : metadata; - this.contentEncoding = contentEncoding; - this.contentDisposition = contentDisposition; - this.contentLanguage = contentLanguage; - this.cacheControl = cacheControl; - this.acl = acl; - this.owner = owner; - this.crc32c = crc32c; - this.componentCount = componentCount; - } - - public String getName() { - return name; - } - - public String getBucket() { - return bucket; - } - - public Long getGeneration() { - return generation; - } - - public Long getMetageneration() { - return metageneration; - } - - public String getContentType() { - return contentType; - } - - public Date getUpdated() { - return updated; - } - - public Date getTimeDeleted() { - return timeDeleted; - } - - public StorageClass getStorageClass() { - return storageClass; - } - - public Long getSize() { - return size; - } - - private String getMd5Hash() { - return md5Hash; - } - - public HashCode getMd5HashCode() { - if (md5Hash != null) { - HashCode hc = HashCode.fromBytes(BaseEncoding.base64().decode(md5Hash)); - return hc; - } - return null; - } - - public URI getMediaLink() { - return mediaLink; - } - - public Map<String, String> getAllMetadata() { - return this.metadata; - } - - public String getContentEncoding() { - return contentEncoding; - } - - public String getContentDisposition() { - return contentDisposition; - } - - public String getContentLanguage() { - return contentLanguage; - } - - public String getCacheControl() { - return cacheControl; - } - - public Set<ObjectAccessControls> getAcl() { - return acl; - } - - public Owner getOwner() { - return owner; - } - - private String getCrc32c() { - return crc32c; - } - - public HashCode getCrc32cHashcode() { - if (crc32c != null) { - HashCode hc = HashCode.fromBytes(DomainUtils.reverse(BaseEncoding.base64().decode(crc32c))); - return hc; - } - return null; - - } - - public Integer getComponentCount() { - return componentCount; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null || getClass() != obj.getClass()) - return false; - GCSObject that = GCSObject.class.cast(obj); - return equal(this.kind, that.kind) && equal(this.name, that.name) && equal(this.bucket, that.bucket); - - } - - protected Objects.ToStringHelper string() { - return super.string().omitNullValues().add("name", name).add("bucket", bucket).add("generation", generation) - .add("metageneration", metageneration).add("timeDeleted", timeDeleted).add("updated", updated) - .add("storageClass", storageClass).add("size", size).add("md5Hash", md5Hash).add("mediaLink", mediaLink) - .add("metadata", metadata).add("contentEncoding", contentEncoding) - .add("contentDisposition", contentDisposition).add("contentLanguage", contentLanguage) - .add("cacheControl", cacheControl).add("crc32c", crc32c).add("componentCount", componentCount) - .add("acl", acl).add("owner", owner); - - } - - @Override - public String toString() { - return string().toString(); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return new Builder().fromGCSObject(this); - } - - protected static final class Builder extends Resource.Builder<Builder> { - - private String name; - private String bucket; - private Long generation; - private Long metageneration; - private String contentType; - private Date updated; - private Date timeDeleted; - private StorageClass storageClass; - private Long size; - private String md5Hash; - private URI mediaLink; - private ImmutableMap.Builder<String, String> metadata = ImmutableMap.builder(); - private String contentEncoding; - private String contentDisposition; - private String contentLanguage; - private String cacheControl; - private ImmutableSet.Builder<ObjectAccessControls> acl = ImmutableSet.builder(); - private Owner owner; - private String crc32c; - private Integer componentCount; - - protected Builder name(String name) { - this.name = name; - return this; - } - - protected Builder bucket(String bucket) { - this.bucket = bucket; - return this; - } - - protected Builder generation(Long generation) { - this.generation = generation; - return this; - } - - protected Builder metageneration(Long metageneration) { - this.metageneration = metageneration; - return this; - } - - protected Builder customMetadata(Map<String, String> metadata) { - this.metadata.putAll(metadata); - return this; - } - - protected Builder addCustomMetadata(String key, String value) { - this.metadata.put(key, value); - return this; - } - - protected Builder size(Long size) { - this.size = size; - return this; - } - - protected Builder componentCount(Integer componentCount) { - this.componentCount = componentCount; - return this; - } - - protected Builder contentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** Requires base64 encoded crc32c string */ - protected Builder md5Hash(String md5Hash) { - this.md5Hash = md5Hash; - return this; - } - - protected Builder mediaLink(URI mediaLink) { - this.mediaLink = mediaLink; - return this; - } - - protected Builder contentEncoding(String contentEncoding) { - this.contentEncoding = contentEncoding; - return this; - } - - protected Builder contentDisposition(String contentDisposition) { - this.contentDisposition = contentDisposition; - return this; - } - - protected Builder contentLanguage(String contentLanguage) { - this.contentLanguage = contentLanguage; - return this; - } - - protected Builder cacheControl(String cacheControl) { - this.cacheControl = cacheControl; - return this; - } - - protected Builder updated(Date updated) { - this.updated = updated; - return this; - } - - protected Builder timeDeleted(Date timeDeleted) { - this.timeDeleted = timeDeleted; - return this; - } - - protected Builder owner(Owner owner) { - this.owner = owner; - return this; - } - - protected Builder storageClass(StorageClass storageClass) { - this.storageClass = storageClass; - return this; - } - - protected Builder addAcl(ObjectAccessControls bucketAccessControls) { - this.acl.add(bucketAccessControls); - return this; - } - - protected Builder acl(Set<ObjectAccessControls> acl) { - this.acl.addAll(acl); - return this; - } - - /** Requires base64 encoded crc32c string */ - protected Builder crc32c(String crc32c) { - this.crc32c = crc32c; - return this; - } - - @Override - protected Builder self() { - return this; - } - - public GCSObject build() { - return new GCSObject(super.id, super.selfLink, super.etag, name, bucket, generation, metageneration, - contentType, updated, timeDeleted, storageClass, size, md5Hash, mediaLink, metadata.build(), - contentEncoding, contentDisposition, contentLanguage, cacheControl, acl.build(), owner, crc32c, - componentCount); - } - - protected Builder fromGCSObject(GCSObject in) { - return super.fromResource(in).name(in.getName()).bucket(in.getBucket()).generation(in.getGeneration()) - .metageneration(in.getMetageneration()).contentEncoding(in.getContentEncoding()) - .contentDisposition(in.getContentDisposition()).contentLanguage(in.getContentLanguage()) - .md5Hash(in.getMd5Hash()).mediaLink(in.getMediaLink()).timeDeleted(in.getTimeDeleted()) - .cacheControl(in.getCacheControl()).crc32c(in.getCrc32c()).size(in.getSize()) - .contentType(in.getContentType()).acl(in.getAcl()).owner(in.getOwner()) - .storageClass(in.getStorageClass()).customMetadata(in.getAllMetadata()); - } +@AutoValue +// TODO: nullable sweep +public abstract class GCSObject { + + public abstract String id(); + public abstract URI selfLink(); + public abstract String etag(); + public abstract String name(); + public abstract String bucket(); + public abstract Long generation(); + public abstract Long metageneration(); + public abstract String contentType(); + public abstract Date updated(); + public abstract Date timeDeleted(); + public abstract StorageClass storageClass(); + public abstract Long size(); + @Nullable public abstract String md5Hash(); + public abstract URI mediaLink(); + public abstract Map<String, String> metadata(); + public abstract String contentEncoding(); + public abstract String contentDisposition(); + public abstract String contentLanguage(); + public abstract String cacheControl(); + public abstract List<ObjectAccessControls> acl(); + public abstract Owner owner(); + @Nullable public abstract String crc32c(); + public abstract Integer componentCount(); + + @SerializedNames( + { "id", "selfLink", "etag", "name", "bucket", "generation", "metageneration", "contentType", "updated", + "timeDeleted", "storageClass", "size", "md5Hash", "mediaLink", "metadata", "contentEncoding", + "contentDisposition", "contentLanguage", "cacheControl", "acl", "owner", "crc32c", "componentCount" }) + public static GCSObject create(String id, URI selfLink, String etag, String name, String bucket, Long generation, + Long metageneration, String contentType, Date updated, Date timeDeleted, StorageClass storageClass, Long size, + String md5Hash, URI mediaLink, Map<String, String> metadata, String contentEncoding, String contentDisposition, + String contentLanguage, String cacheControl, List<ObjectAccessControls> acl, Owner owner, String crc32c, + Integer componentCount) { + return new AutoValue_GCSObject(id, selfLink, etag, name, bucket, generation, metageneration, contentType, updated, + timeDeleted, storageClass, size, md5Hash, mediaLink, copyOf(metadata), contentEncoding, contentDisposition, + contentLanguage, cacheControl, copyOf(acl), owner, crc32c, componentCount); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListBucketAccessControls.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListBucketAccessControls.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListBucketAccessControls.java deleted file mode 100644 index 0a28d60..0000000 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListBucketAccessControls.java +++ /dev/null @@ -1,112 +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.domain; - -/** - * Represents the structure of a response from DefaultObjectAccessControls list operation - * @see <a href= "https://developers.google.com/storage/docs/json_api/v1/bucketAccessControls/list"/> - */ - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Set; - -import org.jclouds.googlecloudstorage.domain.Resource.Kind; - -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableSet; - -public class ListBucketAccessControls { - - private final Kind kind; - private final Set<BucketAccessControls> items; - - private ListBucketAccessControls(Kind kind, Set<BucketAccessControls> items) { - - this.kind = checkNotNull(kind, "kind"); - this.items = checkNotNull(items, "items"); - } - - public Kind getKind() { - return kind; - } - - public Set<BucketAccessControls> getItems() { - return items; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null || getClass() != obj.getClass()) - return false; - ListBucketAccessControls that = ListBucketAccessControls.class.cast(obj); - return equal(this.kind, that.kind) && equal(this.items, that.items); - - } - - protected Objects.ToStringHelper string() { - return toStringHelper(this).omitNullValues().add("kind", kind).add("items", items); - - } - - @Override - public String toString() { - return string().toString(); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return new Builder().fromListBucketAccessControls(this); - } - - public static final class Builder { - - private Kind kind; - private ImmutableSet.Builder<BucketAccessControls> items = ImmutableSet.builder(); - - public Builder kind(Kind kind) { - this.kind = kind; - return this; - } - - public Builder addItems(BucketAccessControls bucketAccessControls) { - this.items.add(bucketAccessControls); - return this; - } - - public Builder items(Set<BucketAccessControls> items) { - this.items.addAll(items); - return this; - } - - public ListBucketAccessControls build() { - return new ListBucketAccessControls(this.kind, items.build()); - } - - public Builder fromListBucketAccessControls(ListBucketAccessControls in) { - return this.kind(in.getKind()).items(in.getItems()); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b8670b16/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListDefaultObjectAccessControls.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListDefaultObjectAccessControls.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListDefaultObjectAccessControls.java deleted file mode 100644 index 2813e9c..0000000 --- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/ListDefaultObjectAccessControls.java +++ /dev/null @@ -1,112 +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.domain; - -/** - * Represents the structure of a response from DefaultObjectAccessControls list operation - * @see <a href= "https://developers.google.com/storage/docs/json_api/v1/defaultObjectAccessControls/list"/> - */ - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Set; - -import org.jclouds.googlecloudstorage.domain.Resource.Kind; - -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableSet; - -public class ListDefaultObjectAccessControls { - - private final Kind kind; - private final Set<DefaultObjectAccessControls> items; - - private ListDefaultObjectAccessControls(Kind kind, Set<DefaultObjectAccessControls> items) { - - this.kind = checkNotNull(kind, "kind"); - this.items = checkNotNull(items, "items"); - } - - public Kind getKind() { - return kind; - } - - public Set<DefaultObjectAccessControls> getItems() { - return items; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null || getClass() != obj.getClass()) - return false; - ListDefaultObjectAccessControls that = ListDefaultObjectAccessControls.class.cast(obj); - return equal(this.kind, that.kind) && equal(this.items, that.items); - - } - - protected Objects.ToStringHelper string() { - return toStringHelper(this).omitNullValues().add("kind", kind).add("items", items); - - } - - @Override - public String toString() { - return string().toString(); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return new Builder().fromListDefaultObjectAccessControls(this); - } - - public static final class Builder { - - private Kind kind; - private ImmutableSet.Builder<DefaultObjectAccessControls> items = ImmutableSet.builder(); - - public Builder kind(Kind kind) { - this.kind = kind; - return this; - } - - public Builder addItems(DefaultObjectAccessControls defaultObjectAccessControls) { - this.items.add(defaultObjectAccessControls); - return this; - } - - public Builder items(Set<DefaultObjectAccessControls> items) { - this.items.addAll(items); - return this; - } - - public ListDefaultObjectAccessControls build() { - return new ListDefaultObjectAccessControls(this.kind, items.build()); - } - - public Builder fromListDefaultObjectAccessControls(ListDefaultObjectAccessControls in) { - return this.kind(in.getKind()).items(in.getItems()); - } - } -}
