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());
-   }
-}