You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/30 17:41:13 UTC
[4/4] git commit: Use AutoValue to reduce bulk of Google Storage
value types.
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 <ac...@twitter.com>
Authored: Tue Oct 28 22:10:34 2014 -0700
Committer: Adrian Cole <ac...@twitter.com>
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());
- }
- }
-}