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/11/17 22:37:57 UTC
[1/3] jclouds-labs-google git commit: Be consistent in naming,
as opposed to GCS here and GoogleCloudStorage there.
Repository: jclouds-labs-google
Updated Branches:
refs/heads/master 737495c6f -> c8d1fe596
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java
new file mode 100644
index 0000000..8a79df9
--- /dev/null
+++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java
@@ -0,0 +1,260 @@
+/*
+ * 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.blobstore.integration;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.blobstore.BlobStore;
+import org.jclouds.blobstore.domain.Blob;
+import org.jclouds.blobstore.domain.BlobBuilder.PayloadBlobBuilder;
+import org.jclouds.blobstore.domain.BlobMetadata;
+import org.jclouds.blobstore.domain.PageSet;
+import org.jclouds.blobstore.domain.StorageMetadata;
+import org.jclouds.blobstore.integration.internal.BaseBlobIntegrationTest;
+import org.jclouds.blobstore.options.PutOptions;
+import org.jclouds.googlecloud.internal.TestProperties;
+import org.jclouds.googlecloudstorage.blobstore.strategy.internal.MultipartUpload;
+import org.jclouds.io.Payloads;
+import org.jclouds.io.payloads.ByteSourcePayload;
+import org.jclouds.utils.TestUtils;
+import org.testng.SkipException;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Charsets;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.hash.HashCode;
+import com.google.common.hash.HashFunction;
+import com.google.common.hash.Hashing;
+import com.google.common.io.ByteSource;
+import com.google.common.io.Files;
+
+@Test(groups = { "live", "blobstorelive" })
+public class GoogleCloudStorageBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
+
+ private long PART_SIZE = MultipartUpload.MIN_PART_SIZE;
+
+ public GoogleCloudStorageBlobIntegrationLiveTest() throws IOException {
+ provider = "google-cloud-storage";
+ }
+
+ @Override protected Properties setupProperties() {
+ Properties properties = super.setupProperties();
+ properties.put("jclouds.mpu.parts.size", 2 * 1024 * 1024);
+ return TestProperties.apply(provider, properties);
+ }
+
+ @Override
+ @Test(enabled = false)
+ public void testGetTwoRanges() throws SkipException {
+ // not supported in GoogleCloudStorage
+ }
+
+ @Override
+ @Test(enabled = false)
+ public void testGetRange() throws SkipException {
+ // not supported in GoogleCloudStorage
+ }
+
+ @Override
+ @Test(enabled = false)
+ public void testCreateBlobWithExpiry() throws SkipException {
+ // not supported in object level.
+ }
+
+ @Override
+ @Test(enabled = false)
+ public void testFileGetParallel() throws SkipException {
+ // Implement Parallel uploads
+ }
+
+ @Override
+ @Test(enabled = false)
+ public void testPutFileParallel() throws SkipException {
+ // Implement Parallel uploads
+ }
+
+ @Override
+ @Test(groups = { "integration", "live" }, dataProvider = "gcsPutTest")
+ public void testPutObject(String name, String type, Object content, Object realObject) throws InterruptedException,
+ IOException {
+ PayloadBlobBuilder blobBuilder = view.getBlobStore().blobBuilder(name).payload(Payloads.newPayload(content))
+ .contentType(type);
+ addContentMetadata(blobBuilder);
+ Blob blob = blobBuilder.build();
+ blob.getPayload().setContentMetadata(blob.getMetadata().getContentMetadata());
+ String container = getContainerName();
+
+ try {
+ assertNotNull(view.getBlobStore().putBlob(container, blob));
+ blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName());
+ validateMetadata(blob.getMetadata(), container, name);
+ checkContentMetadata(blob);
+
+ String returnedString = getContentAsStringOrNullAndClose(blob);
+ assertEquals(returnedString, realObject);
+ PageSet<? extends StorageMetadata> set = view.getBlobStore().list(container);
+ assertThat(set).isNotEmpty();
+ } finally {
+ returnContainer(container);
+ }
+ }
+
+ private void addContentMetadata(PayloadBlobBuilder blobBuilder) {
+ blobBuilder.contentType("text/csv");
+ blobBuilder.contentDisposition("attachment; filename=photo.jpg");
+ blobBuilder.contentLanguage("en");
+ }
+
+ protected void checkContentMetadata(Blob blob) {
+ checkContentType(blob, "text/csv");
+ checkContentDisposition(blob, "attachment; filename=photo.jpg");
+ checkContentLanguage(blob, "en");
+ }
+
+ @DataProvider(name = "gcsPutTest")
+ public Object[][] createData1() throws IOException {
+ File file = new File("pom.xml");
+ String realObject = Files.toString(file, Charsets.UTF_8);
+
+ return new Object[][] { { "file.xml", "text/xml", file, realObject },
+ { "string.xml", "text/xml", realObject, realObject },
+ { "bytes.xml", "application/octet-stream", realObject.getBytes(), realObject } };
+ }
+
+ // Content-Length should not be null
+ @Override
+ public void testPutObjectStream() throws InterruptedException, IOException, java.util.concurrent.ExecutionException {
+
+ ByteSource byteSource = ByteSource.wrap("foo".getBytes());
+ ByteSourcePayload payload = new ByteSourcePayload(byteSource);
+ PayloadBlobBuilder blobBuilder = view.getBlobStore().blobBuilder("streaming").payload(payload)
+ .contentLength(byteSource.read().length);
+ addContentMetadata(blobBuilder);
+
+ Blob blob = blobBuilder.build();
+ String container = getContainerName();
+
+ try {
+ assertNotNull(view.getBlobStore().putBlob(container, blob));
+
+ blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName());
+ String returnedString = getContentAsStringOrNullAndClose(blob);
+ assertEquals(returnedString, "foo");
+ validateMetadata(blob.getMetadata(), container, blob.getMetadata().getName());
+ checkContentMetadata(blob);
+ PageSet<? extends StorageMetadata> set = view.getBlobStore().list(container);
+ assertThat(set).isNotEmpty();
+ } finally {
+ returnContainer(container);
+ }
+ };
+
+ @Override
+ public void testMetadata() throws InterruptedException, IOException {
+ String name = "hello";
+
+ HashFunction hf = Hashing.md5();
+ HashCode md5 = hf.newHasher().putString(TEST_STRING, Charsets.UTF_8).hash();
+ Blob blob = view.getBlobStore().blobBuilder(name).userMetadata(ImmutableMap.of("adrian", "powderpuff"))
+ .payload(TEST_STRING).contentType(MediaType.TEXT_PLAIN).contentMD5(md5).build();
+ String container = getContainerName();
+ try {
+ assertNull(view.getBlobStore().blobMetadata(container, "powderpuff"));
+
+ addBlobToContainer(container, blob);
+ Blob newObject = validateContent(container, name);
+
+ BlobMetadata metadata = newObject.getMetadata();
+
+ validateMetadata(metadata);
+ validateMetadata(metadata, container, name);
+ validateMetadata(view.getBlobStore().blobMetadata(container, name));
+
+ blob.getMetadata().getUserMetadata().put("adrian", "wonderpuff");
+ blob.getMetadata().getUserMetadata().put("adrian", "powderpuff");
+
+ addBlobToContainer(container, blob);
+ validateMetadata(view.getBlobStore().blobMetadata(container, name));
+
+ } finally {
+ returnContainer(container);
+ }
+ }
+
+ @Override
+ protected void checkMD5(BlobMetadata metadata) throws IOException {
+ HashCode md5 = Hashing.md5().hashString(TEST_STRING, Charsets.UTF_8);
+ assertEquals(metadata.getContentMetadata().getContentMD5AsHashCode(), md5);
+ }
+
+ @Test(groups = { "integration", "live" })
+ public void testMultipartChunkedFileStream() throws IOException, InterruptedException {
+ String containerName = getContainerName();
+ try {
+ BlobStore blobStore = view.getBlobStore();
+ long countBefore = blobStore.countBlobs(containerName);
+
+ addMultipartBlobToContainer(containerName, "const.txt");
+
+ long countAfter = blobStore.countBlobs(containerName);
+ assertNotEquals(countBefore, countAfter, "No blob was created");
+ assertTrue(countAfter - countBefore > 1, "A multipart blob wasn't actually created - "
+ + "there was only 1 extra blob but there should be one manifest blob and multiple chunk blobs");
+ } finally {
+ returnContainer(containerName);
+ }
+ }
+
+ protected void addMultipartBlobToContainer(String containerName, String key) throws IOException {
+ ByteSource sourceToUpload = TestUtils.randomByteSource().slice(0, (long) (PART_SIZE * 1.1));
+
+ BlobStore blobStore = view.getBlobStore();
+ blobStore.createContainerInLocation(null, containerName);
+ Blob blob = blobStore.blobBuilder(key).payload(sourceToUpload).contentLength(sourceToUpload.size())
+ .contentType(MediaType.TEXT_PLAIN).build();
+ blobStore.putBlob(containerName, blob, PutOptions.Builder.multipart());
+ }
+
+ @DataProvider(name = "delete")
+ public Object[][] createData() {
+ if (System.getProperty("os.name").toLowerCase().contains("windows")) {
+ return new Object[][] { { "normal" }, { "sp ace" } };
+ } else {
+ return new Object[][] { { "normal" }, { "sp ace" }, { "qu?stion" }, { "path/foo" }, { "colon:" },
+ { "asteri*k" }, { "quote\"" }, { "{great<r}" }, { "lesst>en" }, { "p|pe" } };
+ }
+ }
+
+ // Remove "unic₪de" from DataProvider
+ @Override
+ @Test(groups = { "integration", "live" }, dataProvider = "delete")
+ public void deleteObject(String name) throws InterruptedException {
+ super.deleteObject(name);
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobLiveTest.java
new file mode 100644
index 0000000..6662826
--- /dev/null
+++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobLiveTest.java
@@ -0,0 +1,114 @@
+/*
+ * 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.blobstore.integration;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import org.jclouds.blobstore.BlobStore;
+import org.jclouds.blobstore.domain.Blob;
+import org.jclouds.blobstore.integration.internal.BaseBlobLiveTest;
+import org.jclouds.googlecloud.internal.TestProperties;
+import org.jclouds.http.HttpRequest;
+import org.jclouds.http.HttpResponse;
+import org.jclouds.http.internal.PayloadEnclosingImpl;
+import org.jclouds.io.ByteStreams2;
+import org.jclouds.io.Payloads;
+import org.jclouds.io.payloads.ByteSourcePayload;
+import org.jclouds.utils.TestUtils;
+import org.testng.annotations.Parameters;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.hash.HashCode;
+import com.google.common.hash.Hashing;
+import com.google.common.io.BaseEncoding;
+import com.google.common.io.ByteSource;
+
+@Test(groups = { "live" })
+public class GoogleCloudStorageBlobLiveTest extends BaseBlobLiveTest {
+ private static final String sysHttpStreamUrl = System.getProperty("jclouds.blobstore.httpstream.url");
+ private static final String sysHttpStreamMD5 = System.getProperty("jclouds.blobstore.httpstream.md5");
+
+ public GoogleCloudStorageBlobLiveTest() {
+ provider = "google-cloud-storage";
+ }
+
+ @Override protected Properties setupProperties() {
+ return TestProperties.apply(provider, super.setupProperties());
+ }
+
+ @Override
+ @Parameters({ "jclouds.blobstore.httpstream.url", "jclouds.blobstore.httpstream.md5" })
+ public void testCopyUrl(String httpStreamUrl, String httpStreamMD5) throws Exception {
+ httpStreamUrl = checkNotNull(httpStreamUrl != null ? httpStreamUrl : sysHttpStreamUrl, "httpStreamUrl");
+ httpStreamMD5 = checkNotNull(httpStreamMD5 != null ? httpStreamMD5 : sysHttpStreamMD5, "httpStreamMd5");
+
+ HttpResponse response = view.utils().http()
+ .invoke(HttpRequest.builder().method("GET").endpoint(httpStreamUrl).build());
+ long length = response.getPayload().getContentMetadata().getContentLength();
+
+ checkNotNull(response.getPayload().getContentMetadata().getContentType());
+ assertEquals(response.getPayload().getContentMetadata().getContentType(), "application/x-gzip");
+
+ String name = "hello";
+ HashCode md5 = HashCode.fromBytes(BaseEncoding.base16().lowerCase().decode(httpStreamMD5));
+ byte[] payload = ByteStreams2.toByteArrayAndClose(response.getPayload().getInput());
+
+ Blob blob = view.getBlobStore().blobBuilder(name).payload(payload).contentLength(length)
+ .contentType(response.getPayload().getContentMetadata().getContentType())
+ .contentMD5(md5).build();
+ String container = getContainerName();
+ try {
+ assertNotNull(view.getBlobStore().putBlob(container, blob));
+ checkMD5(container, name, md5.asBytes());
+ } finally {
+ returnContainer(container);
+ }
+ }
+
+ @Test(groups = "live")
+ public void testPutBlobWithMd5() throws IOException, InterruptedException {
+ String containerName = getContainerName();
+ String blobName = "md5test";
+ try {
+ long contentLength = 32 * 1024L;
+ ByteSource byteSource = TestUtils.randomByteSource().slice(0, contentLength);
+ ByteSourcePayload payload = Payloads.newByteSourcePayload(byteSource);
+ PayloadEnclosingImpl payloadImpl = new PayloadEnclosingImpl(payload);
+
+ BlobStore blobStore = view.getBlobStore();
+
+ // This would trigger server side validation of md5
+ HashCode hcMd5 = byteSource.hash(Hashing.md5());
+
+ Blob blob = blobStore.blobBuilder(blobName).payload(payloadImpl.getPayload()).contentType("image/jpeg")
+ .contentLength(contentLength).contentLanguage("en").contentDisposition("attachment")
+ .contentMD5(hcMd5).userMetadata(ImmutableMap.of("Adrian", "powderpuff")).build();
+
+ blobStore.putBlob(containerName, blob);
+ checkMD5(containerName, blobName, hcMd5.asBytes());
+
+ } finally {
+ returnContainer(containerName);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java
new file mode 100644
index 0000000..ed609cb
--- /dev/null
+++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerIntegrationLiveTest.java
@@ -0,0 +1,102 @@
+/*
+ * 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.blobstore.integration;
+
+import static com.google.common.collect.Iterables.get;
+import static org.jclouds.blobstore.options.ListContainerOptions.Builder.maxResults;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.blobstore.domain.BlobMetadata;
+import org.jclouds.blobstore.domain.PageSet;
+import org.jclouds.blobstore.domain.StorageMetadata;
+import org.jclouds.blobstore.integration.internal.BaseContainerIntegrationTest;
+import org.jclouds.blobstore.options.ListContainerOptions;
+import org.jclouds.googlecloud.internal.TestProperties;
+import org.testng.SkipException;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Charsets;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.hash.Hashing;
+
+public class GoogleCloudStorageContainerIntegrationLiveTest extends BaseContainerIntegrationTest {
+
+ public GoogleCloudStorageContainerIntegrationLiveTest() {
+ provider = "google-cloud-storage";
+ }
+
+ @Override protected Properties setupProperties() {
+ return TestProperties.apply(provider, super.setupProperties());
+ }
+
+ @Override
+ @Test(groups = { "integration", "live" })
+ public void testWithDetails() throws InterruptedException, IOException {
+ String key = "hello";
+ String containerName = getContainerName();
+ try {
+ addBlobToContainer(
+ containerName,
+ view.getBlobStore().blobBuilder(key).userMetadata(ImmutableMap.of("adrian", "powderpuff"))
+ .payload(TEST_STRING).contentType(MediaType.TEXT_PLAIN)
+ .contentMD5(Hashing.md5().newHasher().putString(TEST_STRING, Charsets.UTF_8).hash()).build());
+ validateContent(containerName, key);
+
+ PageSet<? extends StorageMetadata> container = view.getBlobStore().list(containerName,
+ maxResults(1).withDetails());
+
+ BlobMetadata metadata = BlobMetadata.class.cast(get(container, 0));
+
+ assert metadata.getContentMetadata().getContentType().startsWith("text/plain") : metadata.getContentMetadata()
+ .getContentType();
+ assertEquals(metadata.getContentMetadata().getContentLength(), Long.valueOf(TEST_STRING.length()));
+ assertEquals(metadata.getUserMetadata().get("adrian"), "powderpuff");
+ checkMD5(metadata);
+ } finally {
+ returnContainer(containerName);
+ }
+ }
+
+ /** Google Cloud Storage lists prefixes and objects in two different lists */
+ @Override
+ public void testListRootUsesDelimiter() throws InterruptedException {
+ String containerName = getContainerName();
+ try {
+ String prefix = "rootdelimiter";
+ addTenObjectsUnderPrefix(containerName, prefix);
+ add15UnderRoot(containerName);
+ PageSet<? extends StorageMetadata> container = view.getBlobStore().list(containerName,
+ new ListContainerOptions());
+ assertNull(container.getNextMarker());
+ assertEquals(container.size(), 15);
+ } finally {
+ returnContainer(containerName);
+ }
+ }
+
+ @Override
+ public void testDirectory() throws InterruptedException {
+ // GoogleCloudStorage does not support directories, rather it supports prefixes which look like directories.
+ throw new SkipException("directories are not supported in GoogleCloudStorage");
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerLiveTest.java
new file mode 100644
index 0000000..882a2ed
--- /dev/null
+++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageContainerLiveTest.java
@@ -0,0 +1,35 @@
+/*
+ * 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.blobstore.integration;
+
+import java.util.Properties;
+
+import org.jclouds.blobstore.integration.internal.BaseContainerLiveTest;
+import org.jclouds.googlecloud.internal.TestProperties;
+import org.testng.annotations.Test;
+
+@Test(groups = { "live" })
+public class GoogleCloudStorageContainerLiveTest extends BaseContainerLiveTest {
+
+ public GoogleCloudStorageContainerLiveTest() {
+ provider = "google-cloud-storage";
+ }
+
+ @Override protected Properties setupProperties() {
+ return TestProperties.apply(provider, super.setupProperties());
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java
index 9b21d2a..2417eec 100644
--- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java
+++ b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java
@@ -32,7 +32,7 @@ import org.jclouds.googlecloudstorage.domain.Bucket;
import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.DestinationPredefinedAcl;
import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole;
import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Projection;
-import org.jclouds.googlecloudstorage.domain.GCSObject;
+import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject;
import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes;
import org.jclouds.googlecloudstorage.domain.ObjectAccessControls;
import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate;
@@ -113,7 +113,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
InsertObjectOptions options = new InsertObjectOptions().name(UPLOAD_OBJECT_NAME);
- GCSObject gcsObject = api().simpleUpload(BUCKET_NAME, "text/plain",
+ GoogleCloudStorageObject gcsObject = api().simpleUpload(BUCKET_NAME, "text/plain",
payload.getPayload().getContentMetadata().getContentLength(), payload.getPayload(), options);
assertNotNull(gcsObject);
@@ -144,7 +144,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
InsertObjectOptions options = new InsertObjectOptions().name(UPLOAD_OBJECT_NAME2);
- GCSObject gcsObject = api().simpleUpload(BUCKET_NAME, "image/jpeg", contentLength, payload, options);
+ GoogleCloudStorageObject gcsObject = api().simpleUpload(BUCKET_NAME, "image/jpeg", contentLength, payload, options);
assertNotNull(gcsObject);
assertEquals(gcsObject.bucket(), BUCKET_NAME);
@@ -159,7 +159,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
@Test(groups = "live", dependsOnMethods = "testSimpleUpload")
public void testGetObject() {
- GCSObject gcsObject = api().getObject(BUCKET_NAME, UPLOAD_OBJECT_NAME);
+ GoogleCloudStorageObject gcsObject = api().getObject(BUCKET_NAME, UPLOAD_OBJECT_NAME);
assertNotNull(gcsObject);
@@ -176,7 +176,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
GetObjectOptions options = new GetObjectOptions().ifGenerationMatch(generation)
.ifMetagenerationMatch(metageneration).ifGenerationNotMatch(generation + 1).projection(Projection.FULL);
- GCSObject gcsObject = api().getObject(BUCKET_NAME, UPLOAD_OBJECT_NAME, options);
+ GoogleCloudStorageObject gcsObject = api().getObject(BUCKET_NAME, UPLOAD_OBJECT_NAME, options);
assertNotNull(gcsObject);
assertNotNull(gcsObject.acl());
@@ -187,7 +187,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
@Test(groups = "live", dependsOnMethods = "testGetObject")
public void testCopyObject() throws IOException {
- GCSObject gcsObject = api().copyObject(BUCKET_NAME2, COPIED_OBJECT_NAME, BUCKET_NAME, UPLOAD_OBJECT_NAME);
+ GoogleCloudStorageObject gcsObject = api().copyObject(BUCKET_NAME2, COPIED_OBJECT_NAME, BUCKET_NAME, UPLOAD_OBJECT_NAME);
assertNotNull(gcsObject);
assertEquals(gcsObject.bucket(), BUCKET_NAME2);
@@ -208,7 +208,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
CopyObjectOptions options = new CopyObjectOptions().ifSourceGenerationMatch(generation)
.ifSourceMetagenerationMatch(metageneration).projection(Projection.FULL);
- GCSObject gcsObject = api()
+ GoogleCloudStorageObject gcsObject = api()
.copyObject(BUCKET_NAME2, UPLOAD_OBJECT_NAME, BUCKET_NAME, UPLOAD_OBJECT_NAME, options);
assertNotNull(gcsObject);
@@ -224,13 +224,13 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
.role(ObjectRole.OWNER).build();
ObjectTemplate destination = new ObjectTemplate().contentType("text/plain").addAcl(oacl);
- List<GCSObject> sourceList = Lists.newArrayList();
+ List<GoogleCloudStorageObject> sourceList = Lists.newArrayList();
sourceList.add(api().getObject(BUCKET_NAME2, UPLOAD_OBJECT_NAME));
sourceList.add(api().getObject(BUCKET_NAME2, COPIED_OBJECT_NAME));
ComposeObjectTemplate requestTemplate = ComposeObjectTemplate.create(sourceList, destination);
- GCSObject gcsObject = api().composeObjects(BUCKET_NAME2, COMPOSED_OBJECT, requestTemplate);
+ GoogleCloudStorageObject gcsObject = api().composeObjects(BUCKET_NAME2, COMPOSED_OBJECT, requestTemplate);
assertNotNull(gcsObject);
assertNotNull(gcsObject.acl());
@@ -242,7 +242,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
@Test(groups = "live", dependsOnMethods = "testComposeObject")
public void testComposeObjectWithOptions() {
ObjectTemplate destination = new ObjectTemplate().contentType(MediaType.APPLICATION_JSON);
- List<GCSObject> sourceList = Lists.newArrayList();
+ List<GoogleCloudStorageObject> sourceList = Lists.newArrayList();
sourceList.add(api().getObject(BUCKET_NAME2, UPLOAD_OBJECT_NAME));
sourceList.add(api().getObject(BUCKET_NAME2, COPIED_OBJECT_NAME));
@@ -251,7 +251,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
ComposeObjectOptions options = new ComposeObjectOptions().destinationPredefinedAcl(
DestinationPredefinedAcl.BUCKET_OWNER_READ).ifMetagenerationNotMatch(RANDOM_LONG);
- GCSObject gcsObject = api().composeObjects(BUCKET_NAME2, COMPOSED_OBJECT2, requestTemplate, options);
+ GoogleCloudStorageObject gcsObject = api().composeObjects(BUCKET_NAME2, COMPOSED_OBJECT2, requestTemplate, options);
assertNotNull(gcsObject);
assertNotNull(gcsObject.acl());
@@ -262,20 +262,20 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
@Test(groups = "live", dependsOnMethods = "testComposeObjectWithOptions")
public void listObjects() {
- ListPageWithPrefixes<GCSObject> list = api().listObjects(BUCKET_NAME);
+ ListPageWithPrefixes<GoogleCloudStorageObject> list = api().listObjects(BUCKET_NAME);
assertNotNull(list);
- assertEquals(list.get(0) instanceof GCSObject, true);
+ assertEquals(list.get(0) instanceof GoogleCloudStorageObject, true);
}
@Test(groups = "live", dependsOnMethods = "testComposeObjectWithOptions")
public void testListObjectsWithOptions() {
ListObjectOptions options = new ListObjectOptions().maxResults(1);
- ListPageWithPrefixes<GCSObject> list = api().listObjects(BUCKET_NAME, options);
+ ListPageWithPrefixes<GoogleCloudStorageObject> list = api().listObjects(BUCKET_NAME, options);
while (list.nextPageToken() != null) {
assertNotNull(list);
- assertEquals(list.get(0) instanceof GCSObject, true);
+ assertEquals(list.get(0) instanceof GoogleCloudStorageObject, true);
assertEquals(list.size(), 1);
options = new ListObjectOptions().maxResults(1).pageToken(list.nextPageToken());
@@ -290,7 +290,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
.role(ObjectRole.OWNER).build();
ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg");
- GCSObject gcsObject = api().updateObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template);
+ GoogleCloudStorageObject gcsObject = api().updateObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template);
assertNotNull(gcsObject);
assertNotNull(gcsObject.acl());
@@ -312,7 +312,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg")
.contentDisposition("attachment").customMetadata(METADATA_KEY, METADATA_VALUE);
- GCSObject gcsObject = api().updateObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template, options);
+ GoogleCloudStorageObject gcsObject = api().updateObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template, options);
assertNotNull(gcsObject);
assertNotNull(gcsObject.acl());
@@ -329,7 +329,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
.role(ObjectRole.READER).build();
ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg");
- GCSObject gcsObject = api().patchObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template);
+ GoogleCloudStorageObject gcsObject = api().patchObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template);
assertNotNull(gcsObject);
assertNotNull(gcsObject.acl());
@@ -349,7 +349,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg")
.contentDisposition("attachment");
- GCSObject gcsObject = api().patchObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template, options);
+ GoogleCloudStorageObject gcsObject = api().patchObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template, options);
assertNotNull(gcsObject);
assertNotNull(gcsObject.acl());
@@ -380,7 +380,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
.customMetadata("custommetakey1", "custommetavalue1").crc32c(crc32c)
.customMetadata(ImmutableMap.of("Adrian", "powderpuff"));
- GCSObject gcsObject = api().multipartUpload(BUCKET_NAME, template, payloadImpl.getPayload());
+ GoogleCloudStorageObject gcsObject = api().multipartUpload(BUCKET_NAME, template, payloadImpl.getPayload());
assertThat(gcsObject.bucket()).isEqualTo(BUCKET_NAME);
assertThat(gcsObject.name()).isEqualTo(MULTIPART_UPLOAD_OBJECT);
@@ -395,7 +395,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest {
ByteStreams2.toByteArrayAndClose(payloadImpl.getPayload().openStream()));
}
- private void checkHashCodes(GCSObject gcsObject) {
+ private void checkHashCodes(GoogleCloudStorageObject gcsObject) {
assertEquals(HashCode.fromBytes(base64().decode(gcsObject.md5Hash())), md5Hash);
if (crc32c != null) {
assertEquals(HashCode.fromBytes(reverse(base64().decode(gcsObject.crc32c()))), crc32c);
[3/3] jclouds-labs-google git commit: Remove tests for default
fallbacks. This helps clarify code towards what's GCE-specific.
Posted by ad...@apache.org.
Remove tests for default fallbacks. This helps clarify code towards what's GCE-specific.
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/c8d1fe59
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/c8d1fe59
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/c8d1fe59
Branch: refs/heads/master
Commit: c8d1fe5968492ec24855856a8799189a889821a4
Parents: 4d3449f
Author: Adrian Cole <ad...@gmail.com>
Authored: Sun Nov 16 19:28:19 2014 -0800
Committer: Adrian Cole <ac...@twitter.com>
Committed: Mon Nov 17 13:35:17 2014 -0800
----------------------------------------------------------------------
.../features/DiskApiExpectTest.java | 27 +---
.../features/HttpHealthCheckApiExpectTest.java | 66 ----------
.../features/ImageApiExpectTest.java | 20 ---
.../features/InstanceApiExpectTest.java | 123 +------------------
.../features/TargetPoolApiExpectTest.java | 63 ----------
5 files changed, 5 insertions(+), 294 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c8d1fe59/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
index 6fd7840..e3807bc 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
@@ -32,7 +32,6 @@ import org.jclouds.googlecomputeengine.parse.ParseDiskTest;
import org.jclouds.googlecomputeengine.parse.ParseZoneOperationTest;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
-import org.jclouds.rest.ResourceNotFoundException;
import org.testng.annotations.Test;
@Test(groups = "unit", testName = "DiskApiExpectTest")
@@ -54,8 +53,7 @@ public class DiskApiExpectTest extends BaseGoogleComputeEngineExpectTest<GoogleC
DiskApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
TOKEN_RESPONSE, get, response).disksInZone("us-central1-a");
- assertEquals(api.get("testimage1"),
- new ParseDiskTest().expected());
+ assertEquals(api.get("testimage1"), new ParseDiskTest().expected());
}
public void testGetDiskResponseIs4xx() throws Exception {
@@ -153,28 +151,7 @@ public class DiskApiExpectTest extends BaseGoogleComputeEngineExpectTest<GoogleC
TOKEN_RESPONSE, createSnapshotRequest,
createSnapshotResponse).disksInZone("us-central1-a");
- assertEquals(api.createSnapshot("testimage1", "test-snap"),
- new ParseZoneOperationTest().expected());
- }
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testCreateSnapshotResponseIs4xx() {
- HttpRequest createSnapshotRequest = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/zones/us-central1-a/disks/testimage1/createSnapshot")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/disk_create_snapshot.json", MediaType.APPLICATION_JSON))
- .build();
-
- HttpResponse createSnapshotResponse = HttpResponse.builder().statusCode(404).build();
-
- DiskApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, createSnapshotRequest,
- createSnapshotResponse).disksInZone("us-central1-a");
-
- api.createSnapshot("testimage1", "test-snap");
+ assertEquals(api.createSnapshot("testimage1", "test-snap"), new ParseZoneOperationTest().expected());
}
public void testDeleteDiskResponseIs2xx() {
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c8d1fe59/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApiExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApiExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApiExpectTest.java
index 494230d..ad915ca 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApiExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/HttpHealthCheckApiExpectTest.java
@@ -30,7 +30,6 @@ import org.jclouds.googlecomputeengine.parse.ParseHttpHealthCheckListTest;
import org.jclouds.googlecomputeengine.parse.ParseHttpHealthCheckTest;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
-import org.jclouds.rest.ResourceNotFoundException;
import org.testng.annotations.Test;
@Test(groups = "unit", testName = "HttpHealthCheckApiExpectTest")
@@ -90,27 +89,6 @@ public class HttpHealthCheckApiExpectTest extends BaseGoogleComputeEngineExpectT
assertEquals(api.insert("http-health-check", options), new ParseGlobalOperationTest().expected());
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testInsertHttpHealthCheckResponseIs4xx() {
- HttpRequest create = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/global/httpHealthChecks")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/httphealthcheck_insert.json", MediaType.APPLICATION_JSON))
- .build();
-
- HttpResponse insertHttpHealthCheckResponse = HttpResponse.builder().statusCode(404).build();
-
- HttpHealthCheckApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, create, insertHttpHealthCheckResponse).httpHeathChecks();
-
- HttpHealthCheckCreationOptions options = new HttpHealthCheckCreationOptions().timeoutSec(0).unhealthyThreshold(0);
-
- api.insert("http-health-check", options);
- }
-
public void testDeleteHttpHealthCheckResponseIs2xx() {
HttpRequest delete = HttpRequest
.builder()
@@ -193,28 +171,6 @@ public class HttpHealthCheckApiExpectTest extends BaseGoogleComputeEngineExpectT
assertEquals(api.patch(healthCheckName, options), new ParseGlobalOperationTest().expected());
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testPatchHttpHealthChecksResponseIs4xx(){
- String healthCheckName = "http-health-check";
- HttpRequest patch = HttpRequest
- .builder()
- .method("PATCH")
- .endpoint(BASE_URL + "/party/global/httpHealthChecks/" + healthCheckName)
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/httphealthcheck_insert.json", MediaType.APPLICATION_JSON))
- .build();
-
- HttpResponse insertHttpHealthCheckResponse = HttpResponse.builder().statusCode(404).build();
-
- HttpHealthCheckApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, patch,
- insertHttpHealthCheckResponse).httpHeathChecks();
- HttpHealthCheckCreationOptions options = new HttpHealthCheckCreationOptions().timeoutSec(0).unhealthyThreshold(0);
-
- api.patch(healthCheckName, options);
- }
-
public void testUpdateHttpHealthChecksResponseIs2xx() {
String healthCheckName = "http-health-check";
HttpRequest patch = HttpRequest
@@ -235,26 +191,4 @@ public class HttpHealthCheckApiExpectTest extends BaseGoogleComputeEngineExpectT
HttpHealthCheckCreationOptions options = new HttpHealthCheckCreationOptions().timeoutSec(0).unhealthyThreshold(0);
assertEquals(api.update(healthCheckName, options), new ParseGlobalOperationTest().expected());
}
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testUpdateHttpHealthChecksResponseIs4xx() {
- String healthCheckName = "http-health-check";
- HttpRequest patch = HttpRequest
- .builder()
- .method("PUT")
- .endpoint(BASE_URL + "/party/global/httpHealthChecks/" + healthCheckName)
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/httphealthcheck_insert.json", MediaType.APPLICATION_JSON))
- .build();
-
- HttpResponse insertHttpHealthCheckResponse = HttpResponse.builder().statusCode(404).build();
-
- HttpHealthCheckApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, patch,
- insertHttpHealthCheckResponse).httpHeathChecks();
- HttpHealthCheckCreationOptions options = new HttpHealthCheckCreationOptions().timeoutSec(0).unhealthyThreshold(0);
- api.update(healthCheckName, options);
- }
-
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c8d1fe59/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ImageApiExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ImageApiExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ImageApiExpectTest.java
index cb74767..7091d91 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ImageApiExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ImageApiExpectTest.java
@@ -27,7 +27,6 @@ import org.jclouds.googlecomputeengine.parse.ParseImageTest;
import org.jclouds.googlecomputeengine.parse.ParseOperationTest;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
-import org.jclouds.rest.ResourceNotFoundException;
import org.testng.annotations.Test;
@Test(groups = "unit", testName = "ImageApiExpectTest")
@@ -182,23 +181,4 @@ public class ImageApiExpectTest extends BaseGoogleComputeEngineExpectTest<Google
assertEquals(imageApi.createFromDisk("my-image", BASE_URL + "/party/zones/us-central1-a/disks/mydisk"),
new ParseOperationTest().expected());
}
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testCreateImageFromPdResponseIs4xx() {
- HttpRequest createImage = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/global/images")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResource("/image_insert_from_pd.json"))
- .build();
-
- HttpResponse createImageResponse = HttpResponse.builder().statusCode(404).build();
-
- ImageApi imageApi = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, createImage, createImageResponse).images();
-
- imageApi.createFromDisk("my-image", BASE_URL + "/party/zones/us-central1-a/disks/mydisk");
- }
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c8d1fe59/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiExpectTest.java
index 1896892..1742320 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiExpectTest.java
@@ -21,6 +21,7 @@ import static org.jclouds.googlecomputeengine.features.ProjectApiExpectTest.GET_
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
import java.net.URI;
import java.util.Arrays;
@@ -28,17 +29,15 @@ import java.util.Arrays;
import javax.ws.rs.core.MediaType;
import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.domain.AttachDisk;
import org.jclouds.googlecomputeengine.domain.Metadata;
import org.jclouds.googlecomputeengine.domain.NewInstance;
-import org.jclouds.googlecomputeengine.domain.AttachDisk;
import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineExpectTest;
-import org.jclouds.googlecomputeengine.parse.ParseInstanceListTest;
import org.jclouds.googlecomputeengine.parse.ParseInstanceSerialOutputTest;
import org.jclouds.googlecomputeengine.parse.ParseInstanceTest;
import org.jclouds.googlecomputeengine.parse.ParseZoneOperationTest;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
-import org.jclouds.rest.ResourceNotFoundException;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
@@ -197,12 +196,11 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineExpectTest<Goo
}
public void list() {
-
InstanceApi api = requestsSendResponses(
requestForScopes(COMPUTE_READONLY_SCOPE), TOKEN_RESPONSE,
LIST_INSTANCES_REQUEST, LIST_INSTANCES_RESPONSE).instancesInZone("us-central1-a");
- assertEquals(api.list().next(), new ParseInstanceListTest().expected());
+ assertTrue(api.list().hasNext());
}
public void listEmpty() {
@@ -235,25 +233,6 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineExpectTest<Goo
new ParseZoneOperationTest().expected());
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testSetInstanceMetadataResponseIs4xx() {
- HttpRequest setMetadata = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/zones/us-central1-a/instances/test-1/setMetadata")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/instance_set_metadata.json", MediaType.APPLICATION_JSON))
- .build();
-
- HttpResponse setMetadataResponse = HttpResponse.builder().statusCode(404).build();
-
- InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, setMetadata, setMetadataResponse).instancesInZone("us-central1-a");
-
- api.setMetadata("test-1", Metadata.create("efgh").put("foo", "bar"));
- }
-
public void testSetInstanceTagsResponseIs2xx() {
HttpRequest setTags = HttpRequest
.builder()
@@ -274,25 +253,6 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineExpectTest<Goo
new ParseZoneOperationTest().expected());
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testSetInstanceTagsResponseIs4xx() {
- HttpRequest setTags = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/zones/us-central1-a/instances/test-1/setTags")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/instance_set_tags.json", MediaType.APPLICATION_JSON))
- .build();
-
- HttpResponse setTagsResponse = HttpResponse.builder().statusCode(404).build();
-
- InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, setTags, setTagsResponse).instancesInZone("us-central1-a");
-
- api.setTags("test-1", ImmutableList.of("foo", "bar"), "efgh");
- }
-
public void testResetInstanceResponseIs2xx() {
HttpRequest reset = HttpRequest
.builder()
@@ -311,23 +271,6 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineExpectTest<Goo
new ParseZoneOperationTest().expected());
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testResetInstanceResponseIs4xx() {
- HttpRequest reset = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/zones/us-central1-a/instances/test-1/reset")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN).build();
-
- HttpResponse resetResponse = HttpResponse.builder().statusCode(404).build();
-
- InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, reset, resetResponse).instancesInZone("us-central1-a");
-
- api.reset("test-1");
- }
-
public void testAttachDiskResponseIs2xx() {
HttpRequest attach = HttpRequest
.builder()
@@ -355,27 +298,6 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineExpectTest<Goo
new ParseZoneOperationTest().expected());
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testAttachDiskResponseIs4xx() {
- HttpRequest attach = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/zones/us-central1-a/instances/test-1/attachDisk")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/instance_attach_disk.json", MediaType.APPLICATION_JSON))
- .build();
-
- HttpResponse attachResponse = HttpResponse.builder().statusCode(404).build();
-
- InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, attach, attachResponse).instancesInZone("us-central1-a");
-
- api.attachDisk("test-1", AttachDisk.create(AttachDisk.Type.PERSISTENT, AttachDisk.Mode.READ_ONLY,
- URI.create(BASE_URL + "/party/zones/us-central1-a/disks/testimage1"),
- null, false, null, true));
- }
-
public void testDetachDiskResponseIs2xx() {
HttpRequest detach = HttpRequest
.builder()
@@ -394,45 +316,6 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineExpectTest<Goo
assertEquals(api.detachDisk("test-1", "test-disk-1"),
new ParseZoneOperationTest().expected());
}
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testDetachDiskResponseIs4xx() {
- HttpRequest detach = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/zones/us-central1-a/instances/test-1/detachDisk?deviceName=test-disk-1")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .build();
-
- HttpResponse detachResponse = HttpResponse.builder().statusCode(404).build();
-
- InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, detach, detachResponse).instancesInZone("us-central1-a");
-
- api.detachDisk("test-1", "test-disk-1");
- }
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testSetDiskAutoDeleteResponseIs4xx() {
- HttpRequest setTrue = HttpRequest
- .builder()
- .method("POST")
- .endpoint("https://www.googleapis" +
- ".com/compute/v1/projects/party/zones/us-central1-a/instances/test-1/setDiskAutoDelete" +
- "?deviceName=test-disk-1&autoDelete=true")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .build();
-
- HttpResponse setTrueResponse = HttpResponse.builder().statusCode(404).build();
-
- InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, setTrue, setTrueResponse).instancesInZone("us-central1-a");
-
- api.setDiskAutoDelete("test-1", "test-disk-1", true);
- }
-
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c8d1fe59/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
index 08424fd..6d5c4a7 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
@@ -33,7 +33,6 @@ import org.jclouds.googlecomputeengine.parse.ParseTargetPoolListTest;
import org.jclouds.googlecomputeengine.parse.ParseTargetPoolTest;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
-import org.jclouds.rest.ResourceNotFoundException;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
@@ -174,17 +173,6 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineExpectTest<G
assertEquals(api.addInstance("test", INSTANCES),
new ParseRegionOperationTest().expected());
}
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testAddInstanceResponseIs4xx() throws Exception {
- HttpRequest addInstance = makeGenericRequest("POST", "addInstance", "/targetpool_addinstance.json");
- HttpResponse response = HttpResponse.builder().statusCode(404).build();
-
- TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, addInstance, response).targetPoolsInRegion("us-central1");
-
- api.addInstance("test", INSTANCES);
- }
public void testRemoveInstanceResponseIs2xx(){
HttpRequest removeInstance = makeGenericRequest("POST", "removeInstance", "/targetpool_addinstance.json");
@@ -199,17 +187,6 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineExpectTest<G
new ParseRegionOperationTest().expected());
}
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testRemoveInstanceResponseIs4xx() throws Exception {
- HttpRequest removeInstance = makeGenericRequest("POST", "removeInstance", "/targetpool_addinstance.json");
- HttpResponse response = HttpResponse.builder().statusCode(404).build();
-
- TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, removeInstance, response).targetPoolsInRegion("us-central1");
-
- api.removeInstance("test", INSTANCES);
- }
-
public void testAddHealthCheckResponseIs2xx(){
HttpRequest addHealthCheck = makeGenericRequest("POST", "addHealthCheck", "/targetpool_changehealthcheck.json");
@@ -221,18 +198,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineExpectTest<G
assertEquals(api.addHealthCheck("test", HEALTH_CHECKS), new ParseRegionOperationTest().expected());
}
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testAddHealthCheckResponseIs4xx() throws Exception {
- HttpRequest addHealthCheck = makeGenericRequest("POST", "addHealthCheck", "/targetpool_changehealthcheck.json");
- HttpResponse response = HttpResponse.builder().statusCode(404).build();
-
- TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, addHealthCheck, response).targetPoolsInRegion("us-central1");
- api.addHealthCheck("test", HEALTH_CHECKS);
- }
-
public void testRemoveHealthCheckResponseIs2xx(){
HttpRequest removeHealthCheck = makeGenericRequest("POST", "removeHealthCheck", "/targetpool_changehealthcheck.json");
@@ -244,18 +210,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineExpectTest<G
assertEquals(api.removeHealthCheck("test", HEALTH_CHECKS), new ParseRegionOperationTest().expected());
}
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testRemoveHealthCheckResponseIs4xx() throws Exception {
- HttpRequest removeHealthCheck = makeGenericRequest("POST", "removeHealthCheck", "/targetpool_changehealthcheck.json");
- HttpResponse response = HttpResponse.builder().statusCode(404).build();
- TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, removeHealthCheck, response).targetPoolsInRegion("us-central1");
-
- api.removeHealthCheck("test", HEALTH_CHECKS);
- }
-
public void testSetBackupResponseIs2xx(){
HttpRequest SetBackup = HttpRequest
.builder()
@@ -293,25 +248,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineExpectTest<G
Float failoverRatio = Float.valueOf("0.5");
assertEquals(api.setBackup("testpool", failoverRatio, TARGET_POOL), new ParseRegionOperationTest().expected());
}
-
- @Test(expectedExceptions = ResourceNotFoundException.class)
- public void testSetBackupResponseIs4xx() throws Exception {
- HttpRequest SetBackup = HttpRequest
- .builder()
- .method("POST")
- .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/testpool/setBackup")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN)
- .payload(payloadFromResourceWithContentType("/targetpool_setbackup.json", MediaType.APPLICATION_JSON))
- .build();
- HttpResponse response = HttpResponse.builder().statusCode(404).build();
- TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
- TOKEN_RESPONSE, SetBackup, response).targetPoolsInRegion("us-central1");
-
- api.setBackup("testpool", TARGET_POOL);
- }
-
public HttpRequest makeGenericRequest(String method, String endpoint, String requestPayloadFile){
HttpRequest request = HttpRequest
.builder()
[2/3] jclouds-labs-google git commit: Be consistent in naming,
as opposed to GCS here and GoogleCloudStorage there.
Posted by ad...@apache.org.
Be consistent in naming, as opposed to GCS here and GoogleCloudStorage there.
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/4d3449f1
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/4d3449f1
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/4d3449f1
Branch: refs/heads/master
Commit: 4d3449f1cc41c1607ca09b604e878a8c3920e627
Parents: 737495c
Author: Adrian Cole <ad...@gmail.com>
Authored: Sun Nov 16 19:51:02 2014 -0800
Committer: Adrian Cole <ac...@twitter.com>
Committed: Mon Nov 17 13:34:52 2014 -0800
----------------------------------------------------------------------
.../GoogleCloudStorageApi.java | 2 -
.../blobstore/GCSBlobStore.java | 254 ------------------
.../blobstore/GoogleCloudStorageBlobStore.java | 254 ++++++++++++++++++
...oogleCloudStorageBlobStoreContextModule.java | 4 +-
.../functions/ObjectListToStorageMetadata.java | 6 +-
.../functions/ObjectToBlobMetadata.java | 6 +-
.../SequentialMultipartUploadStrategy.java | 6 +-
.../googlecloudstorage/domain/GCSObject.java | 79 ------
.../domain/GoogleCloudStorageObject.java | 79 ++++++
.../domain/templates/ComposeObjectTemplate.java | 6 +-
.../googlecloudstorage/features/ObjectApi.java | 56 ++--
.../features/ResumableUploadApi.java | 2 +-
.../integration/GCSBlobIntegrationLiveTest.java | 260 -------------------
.../blobstore/integration/GCSBlobLiveTest.java | 114 --------
.../GCSContainerIntegrationLiveTest.java | 102 --------
.../integration/GCSContainerLiveTest.java | 35 ---
...ogleCloudStorageBlobIntegrationLiveTest.java | 260 +++++++++++++++++++
.../GoogleCloudStorageBlobLiveTest.java | 114 ++++++++
...loudStorageContainerIntegrationLiveTest.java | 102 ++++++++
.../GoogleCloudStorageContainerLiveTest.java | 35 +++
.../features/ObjectApiLiveTest.java | 42 +--
21 files changed, 908 insertions(+), 910 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApi.java
index eb930df..eec5294 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/GoogleCloudStorageApi.java
@@ -67,13 +67,11 @@ public interface GoogleCloudStorageApi extends Closeable {
* Provides access to Google Cloud Storage Object features
*/
@Delegate
- @Path("")
ObjectApi getObjectApi();
/**
* Provides access to Google Cloud Storage ResumableUpload features
*/
@Delegate
- @Path("")
ResumableUploadApi getResumableUploadApi();
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/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
deleted file mode 100644
index 186fc9b..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GCSBlobStore.java
+++ /dev/null
@@ -1,254 +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.blobstore;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.io.BaseEncoding.base64;
-import static org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole.READER;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.Set;
-
-import javax.inject.Inject;
-
-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.BlobImpl;
-import org.jclouds.blobstore.domain.internal.PageSetImpl;
-import org.jclouds.blobstore.internal.BaseBlobStore;
-import org.jclouds.blobstore.options.CreateContainerOptions;
-import org.jclouds.blobstore.options.GetOptions;
-import org.jclouds.blobstore.options.ListContainerOptions;
-import org.jclouds.blobstore.options.PutOptions;
-import org.jclouds.blobstore.strategy.internal.FetchBlobMetadata;
-import org.jclouds.blobstore.util.BlobUtils;
-import org.jclouds.collect.Memoized;
-import org.jclouds.domain.Location;
-import org.jclouds.googlecloud.config.CurrentProject;
-import org.jclouds.googlecloud.domain.ListPage;
-import org.jclouds.googlecloudstorage.GoogleCloudStorageApi;
-import org.jclouds.googlecloudstorage.blobstore.functions.BlobMetadataToObjectTemplate;
-import org.jclouds.googlecloudstorage.blobstore.functions.BlobStoreListContainerOptionsToListObjectOptions;
-import org.jclouds.googlecloudstorage.blobstore.functions.BucketToStorageMetadata;
-import org.jclouds.googlecloudstorage.blobstore.functions.ObjectListToStorageMetadata;
-import org.jclouds.googlecloudstorage.blobstore.functions.ObjectToBlobMetadata;
-import org.jclouds.googlecloudstorage.blobstore.strategy.internal.MultipartUploadStrategy;
-import org.jclouds.googlecloudstorage.domain.Bucket;
-import org.jclouds.googlecloudstorage.domain.DomainResourceReferences;
-import org.jclouds.googlecloudstorage.domain.GCSObject;
-import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes;
-import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate;
-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.io.Payload;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.base.Throwables;
-import com.google.common.collect.Iterables;
-import com.google.common.hash.HashCode;
-import com.google.inject.Provider;
-
-public final class GCSBlobStore extends BaseBlobStore {
-
- private final GoogleCloudStorageApi api;
- private final BucketToStorageMetadata bucketToStorageMetadata;
- private final ObjectToBlobMetadata objectToBlobMetadata;
- private final ObjectListToStorageMetadata objectListToStorageMetadata;
- private final Provider<FetchBlobMetadata> fetchBlobMetadataProvider;
- private final BlobMetadataToObjectTemplate blobMetadataToObjectTemplate;
- private final BlobStoreListContainerOptionsToListObjectOptions listContainerOptionsToListObjectOptions;
- private final MultipartUploadStrategy multipartUploadStrategy;
- private final Supplier<String> projectId;
-
- @Inject GCSBlobStore(BlobStoreContext context, BlobUtils blobUtils, Supplier<Location> defaultLocation,
- @Memoized Supplier<Set<? extends Location>> locations, GoogleCloudStorageApi api,
- BucketToStorageMetadata bucketToStorageMetadata, ObjectToBlobMetadata objectToBlobMetadata,
- ObjectListToStorageMetadata objectListToStorageMetadata,
- Provider<FetchBlobMetadata> fetchBlobMetadataProvider,
- BlobMetadataToObjectTemplate blobMetadataToObjectTemplate,
- BlobStoreListContainerOptionsToListObjectOptions listContainerOptionsToListObjectOptions,
- MultipartUploadStrategy multipartUploadStrategy, @CurrentProject Supplier<String> projectId) {
- super(context, blobUtils, defaultLocation, locations);
- this.api = api;
- this.bucketToStorageMetadata = bucketToStorageMetadata;
- this.objectToBlobMetadata = objectToBlobMetadata;
- this.objectListToStorageMetadata = objectListToStorageMetadata;
- this.fetchBlobMetadataProvider = checkNotNull(fetchBlobMetadataProvider, "fetchBlobMetadataProvider");
- this.blobMetadataToObjectTemplate = blobMetadataToObjectTemplate;
- this.listContainerOptionsToListObjectOptions = listContainerOptionsToListObjectOptions;
- this.projectId = projectId;
- this.multipartUploadStrategy = multipartUploadStrategy;
- }
-
- @Override
- public PageSet<? extends StorageMetadata> list() {
- return new Function<ListPage<Bucket>, PageSet<? extends StorageMetadata>>() {
- public PageSet<? extends StorageMetadata> apply(ListPage<Bucket> from) {
- return new PageSetImpl<StorageMetadata>(Iterables.transform(from, bucketToStorageMetadata),
- from.nextPageToken());
- }
- }.apply(api.getBucketApi().listBucket(projectId.get()));
- }
-
- @Override
- public boolean containerExists(String container) {
- return api.getBucketApi().bucketExist(container);
- }
-
- @Override
- public boolean createContainerInLocation(Location location, String container) {
- BucketTemplate template = new BucketTemplate().name(container);
- if (location != null) {
- DomainResourceReferences.Location gcsLocation = DomainResourceReferences.Location.fromValue(location.getId());
- template = template.location(gcsLocation);
- }
- return api.getBucketApi().createBucket(projectId.get(), template) != null;
- }
-
- @Override
- public boolean createContainerInLocation(Location location, String container, CreateContainerOptions options) {
- BucketTemplate template = new BucketTemplate().name(container);
- if (location != null) {
- DomainResourceReferences.Location gcsLocation = DomainResourceReferences.Location.fromValue(location.getId());
- template = template.location(gcsLocation);
- }
- Bucket bucket = api.getBucketApi().createBucket(projectId.get(), template);
- if (options.isPublicRead()) {
- try {
- ObjectAccessControlsTemplate doAclTemplate = ObjectAccessControlsTemplate.create("allUsers", READER);
- api.getDefaultObjectAccessControlsApi().createDefaultObjectAccessControls(container, doAclTemplate);
- } catch (HttpResponseException e) {
- // If DefaultObjectAccessControls operation fail, Reverse create operation the operation.
- api.getBucketApi().deleteBucket(container);
- return false;
- }
- }
-
- return bucket != null;
- }
-
- /** Returns list of of all the objects */
- @Override
- public PageSet<? extends StorageMetadata> list(String container) {
- ListPageWithPrefixes<GCSObject> gcsList = api.getObjectApi().listObjects(container);
- PageSet<? extends StorageMetadata> list = objectListToStorageMetadata.apply(gcsList);
- return list;
- }
-
- @Override
- public PageSet<? extends StorageMetadata> list(String container, ListContainerOptions options) {
- if (options != null && options != ListContainerOptions.NONE) {
- ListObjectOptions listOptions = listContainerOptionsToListObjectOptions.apply(options);
- ListPageWithPrefixes<GCSObject> gcsList = api.getObjectApi().listObjects(container, listOptions);
- PageSet<? extends StorageMetadata> list = objectListToStorageMetadata.apply(gcsList);
- return options.isDetailed() ? fetchBlobMetadataProvider.get().setContainerName(container).apply(list) : list;
- } else {
- return list(container);
- }
- }
-
- /**
- * Checks whether an accessible object is available. Google cloud storage does not support directly support
- * BucketExist or ObjectExist operations
- */
- @Override
- public boolean blobExists(String container, String name) {
- try {
- String urlName = name.contains("/") ? URLEncoder.encode(name, Charsets.UTF_8.toString()) : name;
- return api.getObjectApi().objectExists(container, urlName);
- } catch (UnsupportedEncodingException e) {
- throw Throwables.propagate(e);
- }
- }
-
- /**
- * This supports multipart/related upload which has exactly 2 parts, media-part and metadata-part
- */
- @Override
- public String putBlob(String container, Blob blob) {
- checkNotNull(blob.getPayload().getContentMetadata().getContentLength());
- HashCode md5 = blob.getMetadata().getContentMetadata().getContentMD5AsHashCode();
-
- ObjectTemplate template = blobMetadataToObjectTemplate.apply(blob.getMetadata());
-
- if (md5 != null) {
- template.md5Hash(base64().encode(md5.asBytes()));
- }
- return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).etag();
- }
-
- @Override
- public String putBlob(String container, Blob blob, PutOptions options) {
- if (options.multipart().isMultipart()) {
- return multipartUploadStrategy.execute(container, blob);
- } else {
- return putBlob(container, blob);
- }
- }
-
- @Override
- public BlobMetadata blobMetadata(String container, String name) {
- return objectToBlobMetadata.apply(api.getObjectApi().getObject(container, name));
- }
-
- @Override
- public Blob getBlob(String container, String name, GetOptions options) {
- GCSObject gcsObject = api.getObjectApi().getObject(container, name);
- if (gcsObject == null) {
- return null;
- }
- 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;
- }
-
- @Override
- public void removeBlob(String container, String name) {
- String urlName;
- try {
- urlName = name.contains("/") ? URLEncoder.encode(name, Charsets.UTF_8.toString()) : name;
- } catch (UnsupportedEncodingException uee) {
- throw Throwables.propagate(uee);
- }
- api.getObjectApi().deleteObject(container, urlName);
- }
-
- @Override
- protected boolean deleteAndVerifyContainerGone(String container) {
- ListPageWithPrefixes<GCSObject> list = api.getObjectApi().listObjects(container);
- if (list == null) {
- return api.getBucketApi().deleteBucket(container);
- }
- if (!list.iterator().hasNext() && list.prefixes().isEmpty())
- return api.getBucketApi().deleteBucket(container);
-
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
new file mode 100644
index 0000000..c3f2fd8
--- /dev/null
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
@@ -0,0 +1,254 @@
+/*
+ * 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.blobstore;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.io.BaseEncoding.base64;
+import static org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole.READER;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Set;
+
+import javax.inject.Inject;
+
+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.BlobImpl;
+import org.jclouds.blobstore.domain.internal.PageSetImpl;
+import org.jclouds.blobstore.internal.BaseBlobStore;
+import org.jclouds.blobstore.options.CreateContainerOptions;
+import org.jclouds.blobstore.options.GetOptions;
+import org.jclouds.blobstore.options.ListContainerOptions;
+import org.jclouds.blobstore.options.PutOptions;
+import org.jclouds.blobstore.strategy.internal.FetchBlobMetadata;
+import org.jclouds.blobstore.util.BlobUtils;
+import org.jclouds.collect.Memoized;
+import org.jclouds.domain.Location;
+import org.jclouds.googlecloud.config.CurrentProject;
+import org.jclouds.googlecloud.domain.ListPage;
+import org.jclouds.googlecloudstorage.GoogleCloudStorageApi;
+import org.jclouds.googlecloudstorage.blobstore.functions.BlobMetadataToObjectTemplate;
+import org.jclouds.googlecloudstorage.blobstore.functions.BlobStoreListContainerOptionsToListObjectOptions;
+import org.jclouds.googlecloudstorage.blobstore.functions.BucketToStorageMetadata;
+import org.jclouds.googlecloudstorage.blobstore.functions.ObjectListToStorageMetadata;
+import org.jclouds.googlecloudstorage.blobstore.functions.ObjectToBlobMetadata;
+import org.jclouds.googlecloudstorage.blobstore.strategy.internal.MultipartUploadStrategy;
+import org.jclouds.googlecloudstorage.domain.Bucket;
+import org.jclouds.googlecloudstorage.domain.DomainResourceReferences;
+import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject;
+import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes;
+import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate;
+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.io.Payload;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Function;
+import com.google.common.base.Supplier;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Iterables;
+import com.google.common.hash.HashCode;
+import com.google.inject.Provider;
+
+public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
+
+ private final GoogleCloudStorageApi api;
+ private final BucketToStorageMetadata bucketToStorageMetadata;
+ private final ObjectToBlobMetadata objectToBlobMetadata;
+ private final ObjectListToStorageMetadata objectListToStorageMetadata;
+ private final Provider<FetchBlobMetadata> fetchBlobMetadataProvider;
+ private final BlobMetadataToObjectTemplate blobMetadataToObjectTemplate;
+ private final BlobStoreListContainerOptionsToListObjectOptions listContainerOptionsToListObjectOptions;
+ private final MultipartUploadStrategy multipartUploadStrategy;
+ private final Supplier<String> projectId;
+
+ @Inject GoogleCloudStorageBlobStore(BlobStoreContext context, BlobUtils blobUtils, Supplier<Location> defaultLocation,
+ @Memoized Supplier<Set<? extends Location>> locations, GoogleCloudStorageApi api,
+ BucketToStorageMetadata bucketToStorageMetadata, ObjectToBlobMetadata objectToBlobMetadata,
+ ObjectListToStorageMetadata objectListToStorageMetadata,
+ Provider<FetchBlobMetadata> fetchBlobMetadataProvider,
+ BlobMetadataToObjectTemplate blobMetadataToObjectTemplate,
+ BlobStoreListContainerOptionsToListObjectOptions listContainerOptionsToListObjectOptions,
+ MultipartUploadStrategy multipartUploadStrategy, @CurrentProject Supplier<String> projectId) {
+ super(context, blobUtils, defaultLocation, locations);
+ this.api = api;
+ this.bucketToStorageMetadata = bucketToStorageMetadata;
+ this.objectToBlobMetadata = objectToBlobMetadata;
+ this.objectListToStorageMetadata = objectListToStorageMetadata;
+ this.fetchBlobMetadataProvider = checkNotNull(fetchBlobMetadataProvider, "fetchBlobMetadataProvider");
+ this.blobMetadataToObjectTemplate = blobMetadataToObjectTemplate;
+ this.listContainerOptionsToListObjectOptions = listContainerOptionsToListObjectOptions;
+ this.projectId = projectId;
+ this.multipartUploadStrategy = multipartUploadStrategy;
+ }
+
+ @Override
+ public PageSet<? extends StorageMetadata> list() {
+ return new Function<ListPage<Bucket>, PageSet<? extends StorageMetadata>>() {
+ public PageSet<? extends StorageMetadata> apply(ListPage<Bucket> from) {
+ return new PageSetImpl<StorageMetadata>(Iterables.transform(from, bucketToStorageMetadata),
+ from.nextPageToken());
+ }
+ }.apply(api.getBucketApi().listBucket(projectId.get()));
+ }
+
+ @Override
+ public boolean containerExists(String container) {
+ return api.getBucketApi().bucketExist(container);
+ }
+
+ @Override
+ public boolean createContainerInLocation(Location location, String container) {
+ BucketTemplate template = new BucketTemplate().name(container);
+ if (location != null) {
+ DomainResourceReferences.Location gcsLocation = DomainResourceReferences.Location.fromValue(location.getId());
+ template = template.location(gcsLocation);
+ }
+ return api.getBucketApi().createBucket(projectId.get(), template) != null;
+ }
+
+ @Override
+ public boolean createContainerInLocation(Location location, String container, CreateContainerOptions options) {
+ BucketTemplate template = new BucketTemplate().name(container);
+ if (location != null) {
+ DomainResourceReferences.Location gcsLocation = DomainResourceReferences.Location.fromValue(location.getId());
+ template = template.location(gcsLocation);
+ }
+ Bucket bucket = api.getBucketApi().createBucket(projectId.get(), template);
+ if (options.isPublicRead()) {
+ try {
+ ObjectAccessControlsTemplate doAclTemplate = ObjectAccessControlsTemplate.create("allUsers", READER);
+ api.getDefaultObjectAccessControlsApi().createDefaultObjectAccessControls(container, doAclTemplate);
+ } catch (HttpResponseException e) {
+ // If DefaultObjectAccessControls operation fail, Reverse create operation the operation.
+ api.getBucketApi().deleteBucket(container);
+ return false;
+ }
+ }
+
+ return bucket != null;
+ }
+
+ /** Returns list of of all the objects */
+ @Override
+ public PageSet<? extends StorageMetadata> list(String container) {
+ ListPageWithPrefixes<GoogleCloudStorageObject> gcsList = api.getObjectApi().listObjects(container);
+ PageSet<? extends StorageMetadata> list = objectListToStorageMetadata.apply(gcsList);
+ return list;
+ }
+
+ @Override
+ public PageSet<? extends StorageMetadata> list(String container, ListContainerOptions options) {
+ if (options != null && options != ListContainerOptions.NONE) {
+ ListObjectOptions listOptions = listContainerOptionsToListObjectOptions.apply(options);
+ ListPageWithPrefixes<GoogleCloudStorageObject> gcsList = api.getObjectApi().listObjects(container, listOptions);
+ PageSet<? extends StorageMetadata> list = objectListToStorageMetadata.apply(gcsList);
+ return options.isDetailed() ? fetchBlobMetadataProvider.get().setContainerName(container).apply(list) : list;
+ } else {
+ return list(container);
+ }
+ }
+
+ /**
+ * Checks whether an accessible object is available. Google cloud storage does not support directly support
+ * BucketExist or ObjectExist operations
+ */
+ @Override
+ public boolean blobExists(String container, String name) {
+ try {
+ String urlName = name.contains("/") ? URLEncoder.encode(name, Charsets.UTF_8.toString()) : name;
+ return api.getObjectApi().objectExists(container, urlName);
+ } catch (UnsupportedEncodingException e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ /**
+ * This supports multipart/related upload which has exactly 2 parts, media-part and metadata-part
+ */
+ @Override
+ public String putBlob(String container, Blob blob) {
+ checkNotNull(blob.getPayload().getContentMetadata().getContentLength());
+ HashCode md5 = blob.getMetadata().getContentMetadata().getContentMD5AsHashCode();
+
+ ObjectTemplate template = blobMetadataToObjectTemplate.apply(blob.getMetadata());
+
+ if (md5 != null) {
+ template.md5Hash(base64().encode(md5.asBytes()));
+ }
+ return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).etag();
+ }
+
+ @Override
+ public String putBlob(String container, Blob blob, PutOptions options) {
+ if (options.multipart().isMultipart()) {
+ return multipartUploadStrategy.execute(container, blob);
+ } else {
+ return putBlob(container, blob);
+ }
+ }
+
+ @Override
+ public BlobMetadata blobMetadata(String container, String name) {
+ return objectToBlobMetadata.apply(api.getObjectApi().getObject(container, name));
+ }
+
+ @Override
+ public Blob getBlob(String container, String name, GetOptions options) {
+ GoogleCloudStorageObject gcsObject = api.getObjectApi().getObject(container, name);
+ if (gcsObject == null) {
+ return null;
+ }
+ 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;
+ }
+
+ @Override
+ public void removeBlob(String container, String name) {
+ String urlName;
+ try {
+ urlName = name.contains("/") ? URLEncoder.encode(name, Charsets.UTF_8.toString()) : name;
+ } catch (UnsupportedEncodingException uee) {
+ throw Throwables.propagate(uee);
+ }
+ api.getObjectApi().deleteObject(container, urlName);
+ }
+
+ @Override
+ protected boolean deleteAndVerifyContainerGone(String container) {
+ ListPageWithPrefixes<GoogleCloudStorageObject> list = api.getObjectApi().listObjects(container);
+ if (list == null) {
+ return api.getBucketApi().deleteBucket(container);
+ }
+ if (!list.iterator().hasNext() && list.prefixes().isEmpty())
+ return api.getBucketApi().deleteBucket(container);
+
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/config/GoogleCloudStorageBlobStoreContextModule.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/config/GoogleCloudStorageBlobStoreContextModule.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/config/GoogleCloudStorageBlobStoreContextModule.java
index 85560e3..3d2bcd7 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/config/GoogleCloudStorageBlobStoreContextModule.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/config/GoogleCloudStorageBlobStoreContextModule.java
@@ -18,7 +18,7 @@ package org.jclouds.googlecloudstorage.blobstore.config;
import org.jclouds.blobstore.BlobStore;
import org.jclouds.blobstore.attr.ConsistencyModel;
-import org.jclouds.googlecloudstorage.blobstore.GCSBlobStore;
+import org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
@@ -28,6 +28,6 @@ public class GoogleCloudStorageBlobStoreContextModule extends AbstractModule {
@Override
protected void configure() {
bind(ConsistencyModel.class).toInstance(ConsistencyModel.EVENTUAL);
- bind(BlobStore.class).to(GCSBlobStore.class).in(Scopes.SINGLETON);
+ bind(BlobStore.class).to(GoogleCloudStorageBlobStore.class).in(Scopes.SINGLETON);
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/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 edc931d..008cb46 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
@@ -26,7 +26,7 @@ import org.jclouds.blobstore.domain.StorageMetadata;
import org.jclouds.blobstore.domain.StorageType;
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.GoogleCloudStorageObject;
import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes;
import com.google.common.base.Function;
@@ -34,14 +34,14 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
public class ObjectListToStorageMetadata
- implements Function<ListPageWithPrefixes<GCSObject>, PageSet<? extends StorageMetadata>> {
+ implements Function<ListPageWithPrefixes<GoogleCloudStorageObject>, PageSet<? extends StorageMetadata>> {
private final ObjectToBlobMetadata object2blobMd;
@Inject public ObjectListToStorageMetadata(ObjectToBlobMetadata object2blobMd) {
this.object2blobMd = object2blobMd;
}
- public PageSet<? extends StorageMetadata> apply(ListPageWithPrefixes<GCSObject> from) {
+ public PageSet<? extends StorageMetadata> apply(ListPageWithPrefixes<GoogleCloudStorageObject> from) {
if (from == null) {
from = ListPageWithPrefixes.create(null, null, null);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/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 8515b3f..636e332 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
@@ -22,21 +22,21 @@ 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.googlecloudstorage.domain.GoogleCloudStorageObject;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Function;
import com.google.common.hash.HashCode;
import com.google.common.io.BaseEncoding;
-public class ObjectToBlobMetadata implements Function<GCSObject, MutableBlobMetadata> {
+public class ObjectToBlobMetadata implements Function<GoogleCloudStorageObject, MutableBlobMetadata> {
private final IfDirectoryReturnNameStrategy ifDirectoryReturnName;
@Inject public ObjectToBlobMetadata(IfDirectoryReturnNameStrategy ifDirectoryReturnName) {
this.ifDirectoryReturnName = ifDirectoryReturnName;
}
- public MutableBlobMetadata apply(GCSObject from) {
+ public MutableBlobMetadata apply(GoogleCloudStorageObject from) {
if (from == null) {
return null;
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/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 3ee612d..137372d 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
@@ -26,7 +26,7 @@ import org.jclouds.blobstore.domain.Blob;
import org.jclouds.blobstore.domain.BlobBuilder;
import org.jclouds.googlecloudstorage.GoogleCloudStorageApi;
import org.jclouds.googlecloudstorage.blobstore.functions.BlobMetadataToObjectTemplate;
-import org.jclouds.googlecloudstorage.domain.GCSObject;
+import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject;
import org.jclouds.googlecloudstorage.domain.templates.ComposeObjectTemplate;
import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate;
import org.jclouds.io.Payload;
@@ -60,7 +60,7 @@ public final class SequentialMultipartUploadStrategy extends MultipartUploadStra
ObjectTemplate destination = blob2ObjectTemplate.apply(blob.getMetadata());
- List<GCSObject> sourceList = Lists.newArrayList();
+ List<GoogleCloudStorageObject> sourceList = Lists.newArrayList();
String key = blob.getMetadata().getName();
Payload payload = blob.getPayload();
@@ -81,7 +81,7 @@ public final class SequentialMultipartUploadStrategy extends MultipartUploadStra
Blob blobPart = blobBuilders.get().name(partName).payload(part).contentDisposition(partName)
.contentLength(partSize).contentType(blob.getMetadata().getContentMetadata().getContentType())
.build();
- GCSObject object = api.getObjectApi().multipartUpload(container,
+ GoogleCloudStorageObject object = api.getObjectApi().multipartUpload(container,
blob2ObjectTemplate.apply(blobPart.getMetadata()), blobPart.getPayload());
sourceList.add(object);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/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
deleted file mode 100644
index 9a38781..0000000
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GCSObject.java
+++ /dev/null
@@ -1,79 +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 org.jclouds.googlecloud.internal.NullSafeCopies.copyOf;
-
-import java.net.URI;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.json.SerializedNames;
-
-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"/>
- */
-@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();
- @Nullable 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();
- @Nullable public abstract String contentEncoding();
- @Nullable public abstract String contentDisposition();
- @Nullable public abstract String contentLanguage();
- @Nullable public abstract String cacheControl();
- public abstract List<ObjectAccessControls> acl();
- public abstract Owner owner();
- @Nullable public abstract String crc32c();
- @Nullable 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/4d3449f1/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GoogleCloudStorageObject.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GoogleCloudStorageObject.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GoogleCloudStorageObject.java
new file mode 100644
index 0000000..f8bd84b
--- /dev/null
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/GoogleCloudStorageObject.java
@@ -0,0 +1,79 @@
+/*
+ * 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 org.jclouds.googlecloud.internal.NullSafeCopies.copyOf;
+
+import java.net.URI;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+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"/>
+ */
+@AutoValue
+// TODO: nullable sweep
+public abstract class GoogleCloudStorageObject {
+
+ 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();
+ @Nullable 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();
+ @Nullable public abstract String contentEncoding();
+ @Nullable public abstract String contentDisposition();
+ @Nullable public abstract String contentLanguage();
+ @Nullable public abstract String cacheControl();
+ public abstract List<ObjectAccessControls> acl();
+ public abstract Owner owner();
+ @Nullable public abstract String crc32c();
+ @Nullable 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 GoogleCloudStorageObject 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_GoogleCloudStorageObject(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/4d3449f1/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ComposeObjectTemplate.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ComposeObjectTemplate.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ComposeObjectTemplate.java
index 0af32ea..669a8f1 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ComposeObjectTemplate.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ComposeObjectTemplate.java
@@ -19,7 +19,7 @@ package org.jclouds.googlecloudstorage.domain.templates;
import java.util.List;
-import org.jclouds.googlecloudstorage.domain.GCSObject;
+import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject;
import com.google.auto.value.AutoValue;
@@ -28,11 +28,11 @@ public abstract class ComposeObjectTemplate {
private final String kind = "storage/composeRequest";
- public abstract List<GCSObject> sourceObjects();
+ public abstract List<GoogleCloudStorageObject> sourceObjects();
public abstract ObjectTemplate destination();
- public static ComposeObjectTemplate create(List<GCSObject> sourceObjects, ObjectTemplate destination) {
+ public static ComposeObjectTemplate create(List<GoogleCloudStorageObject> sourceObjects, ObjectTemplate destination) {
return new AutoValue_ComposeObjectTemplate(sourceObjects, destination);
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
index 3d6127e..3db8f98 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java
@@ -34,7 +34,7 @@ import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.Fallbacks.TrueOnNotFoundOr404;
import org.jclouds.googlecloudstorage.binders.MultipartUploadBinder;
import org.jclouds.googlecloudstorage.binders.UploadBinder;
-import org.jclouds.googlecloudstorage.domain.GCSObject;
+import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject;
import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes;
import org.jclouds.googlecloudstorage.domain.templates.ComposeObjectTemplate;
import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate;
@@ -103,7 +103,7 @@ public interface ObjectApi {
@Consumes(APPLICATION_JSON)
@Fallback(NullOnNotFoundOr404.class)
@Nullable
- GCSObject getObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName);
+ GoogleCloudStorageObject getObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName);
/**
* Retrieves objects metadata
@@ -115,7 +115,7 @@ public interface ObjectApi {
* @param options
* Supply {@link GetObjectOptions} with optional query parameters
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:get")
@GET
@@ -123,7 +123,7 @@ public interface ObjectApi {
@Consumes(APPLICATION_JSON)
@Fallback(NullOnNotFoundOr404.class)
@Nullable
- GCSObject getObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
+ GoogleCloudStorageObject getObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
GetObjectOptions options);
/**
@@ -155,7 +155,7 @@ public interface ObjectApi {
* @param options
* Supply {@link GetObjectOptions} with optional query parameters
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:get")
@GET
@@ -176,7 +176,7 @@ public interface ObjectApi {
* @param options
* Supply an {@link InsertObjectOptions}. 'name' should not null.
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:simpleUpload")
@POST
@@ -184,7 +184,7 @@ public interface ObjectApi {
@Consumes(APPLICATION_JSON)
@Path("/upload/storage/v1/b/{bucket}/o")
@MapBinder(UploadBinder.class)
- GCSObject simpleUpload(@PathParam("bucket") String bucketName, @HeaderParam("Content-Type") String contentType,
+ GoogleCloudStorageObject simpleUpload(@PathParam("bucket") String bucketName, @HeaderParam("Content-Type") String contentType,
@HeaderParam("Content-Length") Long contentLength, @PayloadParam("payload") Payload payload,
InsertObjectOptions Options);
@@ -230,7 +230,7 @@ public interface ObjectApi {
@GET
@Consumes(APPLICATION_JSON)
@Path("storage/v1/b/{bucket}/o")
- ListPageWithPrefixes<GCSObject> listObjects(@PathParam("bucket") String bucketName);
+ ListPageWithPrefixes<GoogleCloudStorageObject> listObjects(@PathParam("bucket") String bucketName);
/**
* Retrieves a list of objects matching the criteria.
@@ -239,13 +239,13 @@ public interface ObjectApi {
* Name of the bucket in which to look for objects.
* @param options
* Supply {@link ListObjectOptions}
- * @return a {@link ListPage<GCSObject>}
+ * @return a {@link ListPage<GoogleCloudStorageObject>}
*/
@Named("Object:list")
@GET
@Consumes(APPLICATION_JSON)
@Path("storage/v1/b/{bucket}/o")
- ListPageWithPrefixes<GCSObject> listObjects(@PathParam("bucket") String bucketName, ListObjectOptions options);
+ ListPageWithPrefixes<GoogleCloudStorageObject> listObjects(@PathParam("bucket") String bucketName, ListObjectOptions options);
/**
* Updates an object metadata
@@ -257,7 +257,7 @@ public interface ObjectApi {
* @param objectTemplate
* Supply an {@link ObjectTemplate}
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:update")
@PUT
@@ -265,7 +265,7 @@ public interface ObjectApi {
@Produces(APPLICATION_JSON)
@Path("storage/v1/b/{bucket}/o/{object}")
@Fallback(NullOnNotFoundOr404.class)
- GCSObject updateObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
+ GoogleCloudStorageObject updateObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
@BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate);
/**
@@ -280,7 +280,7 @@ public interface ObjectApi {
* @param options
* Supply {@link UpdateObjectOptions} with optional query parameters
*
- * @return a {@link GCSObject} .
+ * @return a {@link GoogleCloudStorageObject} .
*/
@Named("Object:update")
@PUT
@@ -288,7 +288,7 @@ public interface ObjectApi {
@Produces(APPLICATION_JSON)
@Path("storage/v1/b/{bucket}/o/{object}")
@Fallback(NullOnNotFoundOr404.class)
- GCSObject updateObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
+ GoogleCloudStorageObject updateObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
@BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate, UpdateObjectOptions options);
/**
@@ -301,7 +301,7 @@ public interface ObjectApi {
* @param objectTemplate
* Supply {@link ObjectTemplate} with optional query parameters
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:patch")
@PATCH
@@ -309,7 +309,7 @@ public interface ObjectApi {
@Produces(APPLICATION_JSON)
@Path("storage/v1/b/{bucket}/o/{object}")
@Fallback(NullOnNotFoundOr404.class)
- GCSObject patchObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
+ GoogleCloudStorageObject patchObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
@BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate);
/**
@@ -324,7 +324,7 @@ public interface ObjectApi {
* @param options
* Supply {@link UpdateObjectOptions} with optional query parameters
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:patch")
@PUT
@@ -332,7 +332,7 @@ public interface ObjectApi {
@Produces(APPLICATION_JSON)
@Path("storage/v1/b/{bucket}/o/{object}")
@Fallback(NullOnNotFoundOr404.class)
- GCSObject patchObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
+ GoogleCloudStorageObject patchObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName,
@BinderParam(BindToJsonPayload.class) ObjectTemplate objectTemplate, UpdateObjectOptions options);
/**
@@ -345,13 +345,13 @@ public interface ObjectApi {
* @param composeObjectTemplate
* Supply a {@link ComposeObjectTemplate}
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:compose")
@POST
@Consumes(APPLICATION_JSON)
@Path("storage/v1/b/{destinationBucket}/o/{destinationObject}/compose")
- GCSObject composeObjects(@PathParam("destinationBucket") String destinationBucket,
+ GoogleCloudStorageObject composeObjects(@PathParam("destinationBucket") String destinationBucket,
@PathParam("destinationObject") String destinationObject,
@BinderParam(BindToJsonPayload.class) ComposeObjectTemplate composeObjectTemplate);
@@ -367,13 +367,13 @@ public interface ObjectApi {
* @param options
* Supply an {@link ComposeObjectOptions}
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:compose")
@POST
@Consumes(APPLICATION_JSON)
@Path("storage/v1/b/{destinationBucket}/o/{destinationObject}/compose")
- GCSObject composeObjects(@PathParam("destinationBucket") String destinationBucket,
+ GoogleCloudStorageObject composeObjects(@PathParam("destinationBucket") String destinationBucket,
@PathParam("destinationObject") String destinationObject,
@BinderParam(BindToJsonPayload.class) ComposeObjectTemplate composeObjectTemplate,
ComposeObjectOptions options);
@@ -390,13 +390,13 @@ public interface ObjectApi {
* @param sourceObject
* Name of the source object
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:copy")
@POST
@Consumes(APPLICATION_JSON)
@Path("/storage/v1/b/{sourceBucket}/o/{sourceObject}/copyTo/b/{destinationBucket}/o/{destinationObject}")
- GCSObject copyObject(@PathParam("destinationBucket") String destinationBucket,
+ GoogleCloudStorageObject copyObject(@PathParam("destinationBucket") String destinationBucket,
@PathParam("destinationObject") String destinationObject, @PathParam("sourceBucket") String sourceBucket,
@PathParam("sourceObject") String sourceObject);
@@ -414,13 +414,13 @@ public interface ObjectApi {
* @param options
* Supply a {@link CopyObjectOptions}
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:copy")
@POST
@Consumes(APPLICATION_JSON)
@Path("/storage/v1/b/{sourceBucket}/o/{sourceObject}/copyTo/b/{destinationBucket}/o/{destinationObject}")
- GCSObject copyObject(@PathParam("destinationBucket") String destinationBucket,
+ GoogleCloudStorageObject copyObject(@PathParam("destinationBucket") String destinationBucket,
@PathParam("destinationObject") String destinationObject, @PathParam("sourceBucket") String sourceBucket,
@PathParam("sourceObject") String sourceObject, CopyObjectOptions options);
@@ -434,7 +434,7 @@ public interface ObjectApi {
* @param objectTemplate
* Supply an {@link ObjectTemplate}.
*
- * @return a {@link GCSObject}
+ * @return a {@link GoogleCloudStorageObject}
*/
@Named("Object:multipartUpload")
@POST
@@ -442,7 +442,7 @@ public interface ObjectApi {
@Consumes(APPLICATION_JSON)
@Path("/upload/storage/v1/b/{bucket}/o")
@MapBinder(MultipartUploadBinder.class)
- GCSObject multipartUpload(@PathParam("bucket") String bucketName,
+ GoogleCloudStorageObject multipartUpload(@PathParam("bucket") String bucketName,
@PayloadParam("template") ObjectTemplate objectTemplate,
@PayloadParam("payload") Payload payload);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
index eae3de6..ab8d172 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ResumableUploadApi.java
@@ -116,7 +116,7 @@ public interface ResumableUploadApi {
* @param options
* Supply {@link InsertObjectOptions} with optional query parameters. 'name' is mandatory.
*
- * @return If successful, this method returns a {@link GCSObject} resource.
+ * @return If successful, this method returns a {@link GoogleCloudStorageObject} resource.
*/
@Named("Object:resumableUpload")
@PUT
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobIntegrationLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobIntegrationLiveTest.java
deleted file mode 100644
index cef46f8..0000000
--- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobIntegrationLiveTest.java
+++ /dev/null
@@ -1,260 +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.blobstore.integration;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Properties;
-
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.domain.BlobBuilder.PayloadBlobBuilder;
-import org.jclouds.blobstore.domain.BlobMetadata;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.integration.internal.BaseBlobIntegrationTest;
-import org.jclouds.blobstore.options.PutOptions;
-import org.jclouds.googlecloud.internal.TestProperties;
-import org.jclouds.googlecloudstorage.blobstore.strategy.internal.MultipartUpload;
-import org.jclouds.io.Payloads;
-import org.jclouds.io.payloads.ByteSourcePayload;
-import org.jclouds.utils.TestUtils;
-import org.testng.SkipException;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.hash.HashCode;
-import com.google.common.hash.HashFunction;
-import com.google.common.hash.Hashing;
-import com.google.common.io.ByteSource;
-import com.google.common.io.Files;
-
-@Test(groups = { "live", "blobstorelive" })
-public class GCSBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
-
- private long PART_SIZE = MultipartUpload.MIN_PART_SIZE;
-
- public GCSBlobIntegrationLiveTest() throws IOException {
- provider = "google-cloud-storage";
- }
-
- @Override protected Properties setupProperties() {
- Properties properties = super.setupProperties();
- properties.put("jclouds.mpu.parts.size", 2 * 1024 * 1024);
- return TestProperties.apply(provider, properties);
- }
-
- @Override
- @Test(enabled = false)
- public void testGetTwoRanges() throws SkipException {
- // not supported in GCS
- }
-
- @Override
- @Test(enabled = false)
- public void testGetRange() throws SkipException {
- // not supported in GCS
- }
-
- @Override
- @Test(enabled = false)
- public void testCreateBlobWithExpiry() throws SkipException {
- // not supported in object level.
- }
-
- @Override
- @Test(enabled = false)
- public void testFileGetParallel() throws SkipException {
- // Implement Parallel uploads
- }
-
- @Override
- @Test(enabled = false)
- public void testPutFileParallel() throws SkipException {
- // Implement Parallel uploads
- }
-
- @Override
- @Test(groups = { "integration", "live" }, dataProvider = "gcsPutTest")
- public void testPutObject(String name, String type, Object content, Object realObject) throws InterruptedException,
- IOException {
- PayloadBlobBuilder blobBuilder = view.getBlobStore().blobBuilder(name).payload(Payloads.newPayload(content))
- .contentType(type);
- addContentMetadata(blobBuilder);
- Blob blob = blobBuilder.build();
- blob.getPayload().setContentMetadata(blob.getMetadata().getContentMetadata());
- String container = getContainerName();
-
- try {
- assertNotNull(view.getBlobStore().putBlob(container, blob));
- blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName());
- validateMetadata(blob.getMetadata(), container, name);
- checkContentMetadata(blob);
-
- String returnedString = getContentAsStringOrNullAndClose(blob);
- assertEquals(returnedString, realObject);
- PageSet<? extends StorageMetadata> set = view.getBlobStore().list(container);
- assertThat(set).isNotEmpty();
- } finally {
- returnContainer(container);
- }
- }
-
- private void addContentMetadata(PayloadBlobBuilder blobBuilder) {
- blobBuilder.contentType("text/csv");
- blobBuilder.contentDisposition("attachment; filename=photo.jpg");
- blobBuilder.contentLanguage("en");
- }
-
- protected void checkContentMetadata(Blob blob) {
- checkContentType(blob, "text/csv");
- checkContentDisposition(blob, "attachment; filename=photo.jpg");
- checkContentLanguage(blob, "en");
- }
-
- @DataProvider(name = "gcsPutTest")
- public Object[][] createData1() throws IOException {
- File file = new File("pom.xml");
- String realObject = Files.toString(file, Charsets.UTF_8);
-
- return new Object[][] { { "file.xml", "text/xml", file, realObject },
- { "string.xml", "text/xml", realObject, realObject },
- { "bytes.xml", "application/octet-stream", realObject.getBytes(), realObject } };
- }
-
- // Content-Length should not be null
- @Override
- public void testPutObjectStream() throws InterruptedException, IOException, java.util.concurrent.ExecutionException {
-
- ByteSource byteSource = ByteSource.wrap("foo".getBytes());
- ByteSourcePayload payload = new ByteSourcePayload(byteSource);
- PayloadBlobBuilder blobBuilder = view.getBlobStore().blobBuilder("streaming").payload(payload)
- .contentLength(byteSource.read().length);
- addContentMetadata(blobBuilder);
-
- Blob blob = blobBuilder.build();
- String container = getContainerName();
-
- try {
- assertNotNull(view.getBlobStore().putBlob(container, blob));
-
- blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName());
- String returnedString = getContentAsStringOrNullAndClose(blob);
- assertEquals(returnedString, "foo");
- validateMetadata(blob.getMetadata(), container, blob.getMetadata().getName());
- checkContentMetadata(blob);
- PageSet<? extends StorageMetadata> set = view.getBlobStore().list(container);
- assertThat(set).isNotEmpty();
- } finally {
- returnContainer(container);
- }
- };
-
- @Override
- public void testMetadata() throws InterruptedException, IOException {
- String name = "hello";
-
- HashFunction hf = Hashing.md5();
- HashCode md5 = hf.newHasher().putString(TEST_STRING, Charsets.UTF_8).hash();
- Blob blob = view.getBlobStore().blobBuilder(name).userMetadata(ImmutableMap.of("adrian", "powderpuff"))
- .payload(TEST_STRING).contentType(MediaType.TEXT_PLAIN).contentMD5(md5).build();
- String container = getContainerName();
- try {
- assertNull(view.getBlobStore().blobMetadata(container, "powderpuff"));
-
- addBlobToContainer(container, blob);
- Blob newObject = validateContent(container, name);
-
- BlobMetadata metadata = newObject.getMetadata();
-
- validateMetadata(metadata);
- validateMetadata(metadata, container, name);
- validateMetadata(view.getBlobStore().blobMetadata(container, name));
-
- blob.getMetadata().getUserMetadata().put("adrian", "wonderpuff");
- blob.getMetadata().getUserMetadata().put("adrian", "powderpuff");
-
- addBlobToContainer(container, blob);
- validateMetadata(view.getBlobStore().blobMetadata(container, name));
-
- } finally {
- returnContainer(container);
- }
- }
-
- @Override
- protected void checkMD5(BlobMetadata metadata) throws IOException {
- HashCode md5 = Hashing.md5().hashString(TEST_STRING, Charsets.UTF_8);
- assertEquals(metadata.getContentMetadata().getContentMD5AsHashCode(), md5);
- }
-
- @Test(groups = { "integration", "live" })
- public void testMultipartChunkedFileStream() throws IOException, InterruptedException {
- String containerName = getContainerName();
- try {
- BlobStore blobStore = view.getBlobStore();
- long countBefore = blobStore.countBlobs(containerName);
-
- addMultipartBlobToContainer(containerName, "const.txt");
-
- long countAfter = blobStore.countBlobs(containerName);
- assertNotEquals(countBefore, countAfter, "No blob was created");
- assertTrue(countAfter - countBefore > 1, "A multipart blob wasn't actually created - "
- + "there was only 1 extra blob but there should be one manifest blob and multiple chunk blobs");
- } finally {
- returnContainer(containerName);
- }
- }
-
- protected void addMultipartBlobToContainer(String containerName, String key) throws IOException {
- ByteSource sourceToUpload = TestUtils.randomByteSource().slice(0, (long) (PART_SIZE * 1.1));
-
- BlobStore blobStore = view.getBlobStore();
- blobStore.createContainerInLocation(null, containerName);
- Blob blob = blobStore.blobBuilder(key).payload(sourceToUpload).contentLength(sourceToUpload.size())
- .contentType(MediaType.TEXT_PLAIN).build();
- blobStore.putBlob(containerName, blob, PutOptions.Builder.multipart());
- }
-
- @DataProvider(name = "delete")
- public Object[][] createData() {
- if (System.getProperty("os.name").toLowerCase().contains("windows")) {
- return new Object[][] { { "normal" }, { "sp ace" } };
- } else {
- return new Object[][] { { "normal" }, { "sp ace" }, { "qu?stion" }, { "path/foo" }, { "colon:" },
- { "asteri*k" }, { "quote\"" }, { "{great<r}" }, { "lesst>en" }, { "p|pe" } };
- }
- }
-
- // Remove "unic₪de" from DataProvider
- @Override
- @Test(groups = { "integration", "live" }, dataProvider = "delete")
- public void deleteObject(String name) throws InterruptedException {
- super.deleteObject(name);
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobLiveTest.java
deleted file mode 100644
index 3db2158..0000000
--- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSBlobLiveTest.java
+++ /dev/null
@@ -1,114 +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.blobstore.integration;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.integration.internal.BaseBlobLiveTest;
-import org.jclouds.googlecloud.internal.TestProperties;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.internal.PayloadEnclosingImpl;
-import org.jclouds.io.ByteStreams2;
-import org.jclouds.io.Payloads;
-import org.jclouds.io.payloads.ByteSourcePayload;
-import org.jclouds.utils.TestUtils;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.hash.HashCode;
-import com.google.common.hash.Hashing;
-import com.google.common.io.BaseEncoding;
-import com.google.common.io.ByteSource;
-
-@Test(groups = { "live" })
-public class GCSBlobLiveTest extends BaseBlobLiveTest {
- private static final String sysHttpStreamUrl = System.getProperty("jclouds.blobstore.httpstream.url");
- private static final String sysHttpStreamMD5 = System.getProperty("jclouds.blobstore.httpstream.md5");
-
- public GCSBlobLiveTest() {
- provider = "google-cloud-storage";
- }
-
- @Override protected Properties setupProperties() {
- return TestProperties.apply(provider, super.setupProperties());
- }
-
- @Override
- @Parameters({ "jclouds.blobstore.httpstream.url", "jclouds.blobstore.httpstream.md5" })
- public void testCopyUrl(String httpStreamUrl, String httpStreamMD5) throws Exception {
- httpStreamUrl = checkNotNull(httpStreamUrl != null ? httpStreamUrl : sysHttpStreamUrl, "httpStreamUrl");
- httpStreamMD5 = checkNotNull(httpStreamMD5 != null ? httpStreamMD5 : sysHttpStreamMD5, "httpStreamMd5");
-
- HttpResponse response = view.utils().http()
- .invoke(HttpRequest.builder().method("GET").endpoint(httpStreamUrl).build());
- long length = response.getPayload().getContentMetadata().getContentLength();
-
- checkNotNull(response.getPayload().getContentMetadata().getContentType());
- assertEquals(response.getPayload().getContentMetadata().getContentType(), "application/x-gzip");
-
- String name = "hello";
- HashCode md5 = HashCode.fromBytes(BaseEncoding.base16().lowerCase().decode(httpStreamMD5));
- byte[] payload = ByteStreams2.toByteArrayAndClose(response.getPayload().getInput());
-
- Blob blob = view.getBlobStore().blobBuilder(name).payload(payload).contentLength(length)
- .contentType(response.getPayload().getContentMetadata().getContentType())
- .contentMD5(md5).build();
- String container = getContainerName();
- try {
- assertNotNull(view.getBlobStore().putBlob(container, blob));
- checkMD5(container, name, md5.asBytes());
- } finally {
- returnContainer(container);
- }
- }
-
- @Test(groups = "live")
- public void testPutBlobWithMd5() throws IOException, InterruptedException {
- String containerName = getContainerName();
- String blobName = "md5test";
- try {
- long contentLength = 32 * 1024L;
- ByteSource byteSource = TestUtils.randomByteSource().slice(0, contentLength);
- ByteSourcePayload payload = Payloads.newByteSourcePayload(byteSource);
- PayloadEnclosingImpl payloadImpl = new PayloadEnclosingImpl(payload);
-
- BlobStore blobStore = view.getBlobStore();
-
- // This would trigger server side validation of md5
- HashCode hcMd5 = byteSource.hash(Hashing.md5());
-
- Blob blob = blobStore.blobBuilder(blobName).payload(payloadImpl.getPayload()).contentType("image/jpeg")
- .contentLength(contentLength).contentLanguage("en").contentDisposition("attachment")
- .contentMD5(hcMd5).userMetadata(ImmutableMap.of("Adrian", "powderpuff")).build();
-
- blobStore.putBlob(containerName, blob);
- checkMD5(containerName, blobName, hcMd5.asBytes());
-
- } finally {
- returnContainer(containerName);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerIntegrationLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerIntegrationLiveTest.java
deleted file mode 100644
index d3686de..0000000
--- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerIntegrationLiveTest.java
+++ /dev/null
@@ -1,102 +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.blobstore.integration;
-
-import static com.google.common.collect.Iterables.get;
-import static org.jclouds.blobstore.options.ListContainerOptions.Builder.maxResults;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.blobstore.domain.BlobMetadata;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.integration.internal.BaseContainerIntegrationTest;
-import org.jclouds.blobstore.options.ListContainerOptions;
-import org.jclouds.googlecloud.internal.TestProperties;
-import org.testng.SkipException;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.hash.Hashing;
-
-public class GCSContainerIntegrationLiveTest extends BaseContainerIntegrationTest {
-
- public GCSContainerIntegrationLiveTest() {
- provider = "google-cloud-storage";
- }
-
- @Override protected Properties setupProperties() {
- return TestProperties.apply(provider, super.setupProperties());
- }
-
- @Override
- @Test(groups = { "integration", "live" })
- public void testWithDetails() throws InterruptedException, IOException {
- String key = "hello";
- String containerName = getContainerName();
- try {
- addBlobToContainer(
- containerName,
- view.getBlobStore().blobBuilder(key).userMetadata(ImmutableMap.of("adrian", "powderpuff"))
- .payload(TEST_STRING).contentType(MediaType.TEXT_PLAIN)
- .contentMD5(Hashing.md5().newHasher().putString(TEST_STRING, Charsets.UTF_8).hash()).build());
- validateContent(containerName, key);
-
- PageSet<? extends StorageMetadata> container = view.getBlobStore().list(containerName,
- maxResults(1).withDetails());
-
- BlobMetadata metadata = BlobMetadata.class.cast(get(container, 0));
-
- assert metadata.getContentMetadata().getContentType().startsWith("text/plain") : metadata.getContentMetadata()
- .getContentType();
- assertEquals(metadata.getContentMetadata().getContentLength(), Long.valueOf(TEST_STRING.length()));
- assertEquals(metadata.getUserMetadata().get("adrian"), "powderpuff");
- checkMD5(metadata);
- } finally {
- returnContainer(containerName);
- }
- }
-
- /** Google Cloud Storage lists prefixes and objects in two different lists */
- @Override
- public void testListRootUsesDelimiter() throws InterruptedException {
- String containerName = getContainerName();
- try {
- String prefix = "rootdelimiter";
- addTenObjectsUnderPrefix(containerName, prefix);
- add15UnderRoot(containerName);
- PageSet<? extends StorageMetadata> container = view.getBlobStore().list(containerName,
- new ListContainerOptions());
- assertNull(container.getNextMarker());
- assertEquals(container.size(), 15);
- } finally {
- returnContainer(containerName);
- }
- }
-
- @Override
- public void testDirectory() throws InterruptedException {
- // GCS does not support directories, rather it supports prefixes which look like directories.
- throw new SkipException("directories are not supported in GCS");
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/4d3449f1/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerLiveTest.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerLiveTest.java
deleted file mode 100644
index 305db36..0000000
--- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GCSContainerLiveTest.java
+++ /dev/null
@@ -1,35 +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.blobstore.integration;
-
-import java.util.Properties;
-
-import org.jclouds.blobstore.integration.internal.BaseContainerLiveTest;
-import org.jclouds.googlecloud.internal.TestProperties;
-import org.testng.annotations.Test;
-
-@Test(groups = { "live" })
-public class GCSContainerLiveTest extends BaseContainerLiveTest {
-
- public GCSContainerLiveTest() {
- provider = "google-cloud-storage";
- }
-
- @Override protected Properties setupProperties() {
- return TestProperties.apply(provider, super.setupProperties());
- }
-}