You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/10/07 00:31:03 UTC

[26/52] [abbrv] git commit: JCLOUDS-40 Remove AsyncBlobStore

JCLOUDS-40 Remove AsyncBlobStore


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/a4e3c1a2
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/a4e3c1a2
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/a4e3c1a2

Branch: refs/heads/use-agentproxy-008
Commit: a4e3c1a2f8305d94143c67e26372db3bf24c6206
Parents: 56a2a8b
Author: Adrian Cole <ad...@gmail.com>
Authored: Sun Oct 5 11:40:48 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Sun Oct 5 13:17:54 2014 -0700

----------------------------------------------------------------------
 .../src/main/clojure/org/jclouds/blobstore2.clj |  11 +-
 .../org/jclouds/blobstore/AsyncBlobStore.java   | 173 -----------
 .../java/org/jclouds/blobstore/BlobStore.java   |   4 -
 .../org/jclouds/blobstore/BlobStoreContext.java |  10 -
 .../internal/BlobStoreContextImpl.java          |  12 +-
 .../internal/SubmissionAsyncBlobStore.java      | 293 -------------------
 .../internal/BaseBlobIntegrationTest.java       |  42 +--
 7 files changed, 20 insertions(+), 525 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/a4e3c1a2/blobstore/src/main/clojure/org/jclouds/blobstore2.clj
----------------------------------------------------------------------
diff --git a/blobstore/src/main/clojure/org/jclouds/blobstore2.clj b/blobstore/src/main/clojure/org/jclouds/blobstore2.clj
index 98d51cb..bb06e5f 100644
--- a/blobstore/src/main/clojure/org/jclouds/blobstore2.clj
+++ b/blobstore/src/main/clojure/org/jclouds/blobstore2.clj
@@ -44,7 +44,7 @@ See http://code.google.com/p/jclouds for details."
            java.util.Properties
            [org.jclouds ContextBuilder]
            [org.jclouds.blobstore
-            AsyncBlobStore domain.BlobBuilder BlobStore BlobStoreContext
+            domain.BlobBuilder BlobStore BlobStoreContext
             domain.BlobMetadata domain.StorageMetadata domain.PageSet
             domain.Blob domain.internal.BlobBuilderImpl options.PutOptions
             options.PutOptions$Builder
@@ -86,8 +86,6 @@ See http://code.google.com/p/jclouds for details."
 
 (defn blobstore
   "Create a logged in context.
-Options for communication style
-     :sync and :async.
 Options can also be specified for extension modules
      :log4j :enterprise :ning :apachehc :bouncycastle :joda :gae"
   [^String provider ^String provider-identity ^String provider-credential
@@ -102,9 +100,7 @@ Options can also be specified for extension modules
                       (overrides (reduce #(do (.put ^Properties %1 (name (first %2)) (second %2)) %1)
                                          (Properties.) (dissoc opts :extensions)))
                       (buildView BlobStoreContext))]
-      (if (some #(= :async %) options)
-        (.getAsyncBlobStore context)
-        (.getBlobStore context)))))
+    (.getBlobStore context))))
 
 (defn blobstore-context
   "Returns a blobstore context from a blobstore."
@@ -117,8 +113,7 @@ Options can also be specified for extension modules
 
 (defn blobstore?
   [object]
-  (or (instance? BlobStore object)
-      (instance? AsyncBlobStore object)))
+  (instance? BlobStore object))
 
 (defn blobstore-context?
   [object]

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a4e3c1a2/blobstore/src/main/java/org/jclouds/blobstore/AsyncBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/AsyncBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/AsyncBlobStore.java
deleted file mode 100644
index a121455..0000000
--- a/blobstore/src/main/java/org/jclouds/blobstore/AsyncBlobStore.java
+++ /dev/null
@@ -1,173 +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.blobstore;
-
-import java.util.Set;
-
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.domain.BlobBuilder;
-import org.jclouds.blobstore.domain.BlobMetadata;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.internal.SubmissionAsyncBlobStore;
-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.domain.Location;
-import org.jclouds.javax.annotation.Nullable;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.inject.ImplementedBy;
-
-/**
- * Provides hooks needed to run a blob store asynchronously
- * 
- * @see BlobStore
- * @deprecated will be removed in jclouds 1.7, as async interfaces are no longer
- *             supported. Please use {@link org.jclouds.blobstore.BlobStore}
- */
-@Deprecated
-@ImplementedBy(SubmissionAsyncBlobStore.class)
-public interface AsyncBlobStore {
-   /**
-    * @see BlobStore#getContext
-    */
-   BlobStoreContext getContext();
-
-   /**
-    * @see BlobStore#blobBuilder
-    */
-   BlobBuilder blobBuilder(String name);
-
-   /**
-    * @see BlobStore#listAssignableLocations
-    */
-   ListenableFuture<Set<? extends Location>> listAssignableLocations();
-
-   /**
-    * @see BlobStore#list
-    */
-   ListenableFuture<PageSet<? extends StorageMetadata>> list();
-
-   /**
-    * @see BlobStore#containerExists
-    */
-   ListenableFuture<Boolean> containerExists(String container);
-
-   /**
-    * @see BlobStore#createContainerInLocation(Location, String)
-    */
-   ListenableFuture<Boolean> createContainerInLocation(@Nullable Location location, String container);
-
-   /**
-    * @see BlobStore#createContainerInLocation(Location,String,CreateContainerOptions)
-    */
-   ListenableFuture<Boolean> createContainerInLocation(@Nullable Location location, String container,
-            CreateContainerOptions options);
-
-   /**
-    * @see BlobStore#list(String)
-    */
-   ListenableFuture<PageSet<? extends StorageMetadata>> list(String container);
-
-   /**
-    * @see BlobStore#list(String, ListContainerOptions)
-    */
-   ListenableFuture<PageSet<? extends StorageMetadata>> list(String container, ListContainerOptions options);
-
-   /**
-    * @see BlobStore#clearContainer(String)
-    */
-   ListenableFuture<Void> clearContainer(String container);
-
-   /**
-    * @see BlobStore#clearContainer(String, ListContainerOptions)
-    */
-   ListenableFuture<Void> clearContainer(String container, ListContainerOptions options);
-
-   /**
-    * @see BlobStore#deleteContainer
-    */
-   ListenableFuture<Void> deleteContainer(String container);
-
-   /**
-    * @see BlobStore#deleteContainerIfEmpty
-    */
-   ListenableFuture<Boolean> deleteContainerIfEmpty(String container);
-
-   /**
-    * @see BlobStore#directoryExists
-    */
-   ListenableFuture<Boolean> directoryExists(String container, String directory);
-
-   /**
-    * @see BlobStore#createDirectory
-    */
-   ListenableFuture<Void> createDirectory(String container, String directory);
-
-   /**
-    * @see BlobStore#deleteDirectory
-    */
-   ListenableFuture<Void> deleteDirectory(String containerName, String name);
-
-   /**
-    * @see BlobStore#blobExists
-    */
-   ListenableFuture<Boolean> blobExists(String container, String name);
-
-   /**
-    * @see BlobStore#putBlob(String,Blob)
-    */
-   ListenableFuture<String> putBlob(String container, Blob blob);
-
-   /**
-    * @see BlobStore#putBlob(String,Blob,PutOptions)
-    */
-   ListenableFuture<String> putBlob(String container, Blob blob, PutOptions options);
-
-   /**
-    * @see BlobStore#blobMetadata
-    */
-   ListenableFuture<BlobMetadata> blobMetadata(String container, String key);
-
-   /**
-    * @see BlobStore#getBlob(String, String)
-    */
-   ListenableFuture<Blob> getBlob(String container, String key);
-
-   /**
-    * @see BlobStore#getBlob(String, String, GetOptions)
-    */
-   ListenableFuture<Blob> getBlob(String container, String key, GetOptions options);
-
-   /**
-    * @see BlobStore#removeBlob
-    */
-   ListenableFuture<Void> removeBlob(String container, String key);
-
-   /**
-    * @see BlobStore#countBlobs(String)
-    */
-   ListenableFuture<Long> countBlobs(String container);
-
-   /**
-    * @see BlobStore#countBlobs(String,ListContainerOptions)
-    */
-   ListenableFuture<Long> countBlobs(String container, ListContainerOptions options);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a4e3c1a2/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
index 88db39a..5dde0cd 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
@@ -32,10 +32,6 @@ import org.jclouds.javax.annotation.Nullable;
 
 /**
  * Synchronous access to a BlobStore such as Amazon S3
- * 
- * @see AsyncBlobStore
- * 
- * @see BlobStoreContextFactory
  */
 public interface BlobStore {
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a4e3c1a2/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreContext.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreContext.java b/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreContext.java
index 8d66d10..1a569dd 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreContext.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreContext.java
@@ -39,16 +39,6 @@ public interface BlobStoreContext extends Closeable, View {
    BlobRequestSigner getSigner();
 
    /**
-    * @return a portable asynchronous interface for the BlobStore, which returns
-    *         {@code Future}s for each call.
-    * @deprecated will be removed in jclouds 1.7, as async interfaces are no
-    *             longer supported. Please use
-    *             {@link #getBlobStore()}
-    */
-   @Deprecated
-   AsyncBlobStore getAsyncBlobStore();
-
-   /**
     * @return a portable interface for the BlobStore.
     */
    BlobStore getBlobStore();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a4e3c1a2/blobstore/src/main/java/org/jclouds/blobstore/internal/BlobStoreContextImpl.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/internal/BlobStoreContextImpl.java b/blobstore/src/main/java/org/jclouds/blobstore/internal/BlobStoreContextImpl.java
index 6d0ea01..6aea926 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/internal/BlobStoreContextImpl.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/internal/BlobStoreContextImpl.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import org.jclouds.Context;
-import org.jclouds.blobstore.AsyncBlobStore;
 import org.jclouds.blobstore.BlobRequestSigner;
 import org.jclouds.blobstore.BlobStore;
 import org.jclouds.blobstore.BlobStoreContext;
@@ -36,7 +35,6 @@ import com.google.common.reflect.TypeToken;
 
 @Singleton
 public class BlobStoreContextImpl extends BaseView implements BlobStoreContext {
-   private final AsyncBlobStore ablobStore;
    private final BlobStore blobStore;
    private final ConsistencyModel consistencyModel;
    private final Utils utils;
@@ -44,12 +42,9 @@ public class BlobStoreContextImpl extends BaseView implements BlobStoreContext {
 
    @Inject
    public BlobStoreContextImpl(@Provider Context backend, @Provider TypeToken<? extends Context> backendType,
-            Utils utils, ConsistencyModel consistencyModel,
-            AsyncBlobStore ablobStore, BlobStore blobStore,
-            BlobRequestSigner blobRequestSigner) {
+         Utils utils, ConsistencyModel consistencyModel, BlobStore blobStore, BlobRequestSigner blobRequestSigner) {
       super(backend, backendType);
       this.consistencyModel = checkNotNull(consistencyModel, "consistencyModel");
-      this.ablobStore = checkNotNull(ablobStore, "ablobStore");
       this.blobStore = checkNotNull(blobStore, "blobStore");
       this.utils = checkNotNull(utils, "utils");
       this.blobRequestSigner = checkNotNull(blobRequestSigner, "blobRequestSigner");
@@ -66,11 +61,6 @@ public class BlobStoreContextImpl extends BaseView implements BlobStoreContext {
    }
 
    @Override
-   public AsyncBlobStore getAsyncBlobStore() {
-      return ablobStore;
-   }
-
-   @Override
    public Utils utils() {
       return utils;
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a4e3c1a2/blobstore/src/main/java/org/jclouds/blobstore/internal/SubmissionAsyncBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/internal/SubmissionAsyncBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/internal/SubmissionAsyncBlobStore.java
deleted file mode 100644
index b141008..0000000
--- a/blobstore/src/main/java/org/jclouds/blobstore/internal/SubmissionAsyncBlobStore.java
+++ /dev/null
@@ -1,293 +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.blobstore.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.Constants.PROPERTY_USER_THREADS;
-
-import java.util.Set;
-import java.util.concurrent.Callable;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.jclouds.blobstore.AsyncBlobStore;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.domain.BlobBuilder;
-import org.jclouds.blobstore.domain.BlobMetadata;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-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.domain.Location;
-
-import com.google.common.collect.ForwardingObject;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
-/**
- * Adapter that allows you to reuse an existing {@link BlobStore} to implement
- * the deprecated {@link AsyncBlobStore} interface.
- * 
- * @deprecated will be removed in jclouds 2.0, as async interfaces are no longer
- *             supported. Please use {@link BlobStore}
- */
-@Deprecated
-public class SubmissionAsyncBlobStore extends ForwardingObject implements AsyncBlobStore {
-   private final BlobStore blobstore;
-   private final ListeningExecutorService executor;
-
-   @Inject
-   public SubmissionAsyncBlobStore(BlobStore blobstore, @Named(PROPERTY_USER_THREADS) ListeningExecutorService executor) {
-      this.blobstore = checkNotNull(blobstore, "blobstore");
-      this.executor = checkNotNull(executor, "executor");
-   }
-
-   @Override
-   protected BlobStore delegate() {
-      return blobstore;
-   }
-
-   @Override
-   public BlobStoreContext getContext() {
-      return delegate().getContext();
-   }
-
-   @Override
-   public BlobBuilder blobBuilder(String name) {
-      return delegate().blobBuilder(name);
-   }
-
-   @Override
-   public ListenableFuture<Set<? extends Location>> listAssignableLocations() {
-      return executor.submit(new Callable<Set<? extends Location>>() {
-         public Set<? extends Location> call() {
-            return delegate().listAssignableLocations();
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<PageSet<? extends StorageMetadata>> list() {
-      return executor.submit(new Callable<PageSet<? extends StorageMetadata>>() {
-         public PageSet<? extends StorageMetadata> call() {
-            return delegate().list();
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Boolean> containerExists(final String container) {
-      return executor.submit(new Callable<Boolean>() {
-         public Boolean call() {
-            return delegate().containerExists(container);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Boolean> createContainerInLocation(final Location location, final String container) {
-      return executor.submit(new Callable<Boolean>() {
-         public Boolean call() {
-            return delegate().createContainerInLocation(location, container);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Boolean> createContainerInLocation(final Location location, final String container,
-         final CreateContainerOptions options) {
-      return executor.submit(new Callable<Boolean>() {
-         public Boolean call() {
-            return delegate().createContainerInLocation(location, container, options);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<PageSet<? extends StorageMetadata>> list(final String container) {
-      return executor.submit(new Callable<PageSet<? extends StorageMetadata>>() {
-         public PageSet<? extends StorageMetadata> call() {
-            return delegate().list(container);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<PageSet<? extends StorageMetadata>> list(final String container,
-         final ListContainerOptions options) {
-      return executor.submit(new Callable<PageSet<? extends StorageMetadata>>() {
-         public PageSet<? extends StorageMetadata> call() {
-            return delegate().list(container, options);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Void> clearContainer(final String container) {
-      return executor.submit(new Callable<Void>() {
-         public Void call() {
-            delegate().clearContainer(container);
-            return null;
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Void> clearContainer(final String container, final ListContainerOptions options) {
-      return executor.submit(new Callable<Void>() {
-         public Void call() {
-            delegate().clearContainer(container, options);
-            return null;
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Void> deleteContainer(final String container) {
-      return executor.submit(new Callable<Void>() {
-         public Void call() {
-            delegate().deleteContainer(container);
-            return null;
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Boolean> deleteContainerIfEmpty(final String container) {
-      return executor.submit(new Callable<Boolean>() {
-         public Boolean call() {
-            return delegate().deleteContainerIfEmpty(container);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Boolean> directoryExists(final String container, final String directory) {
-      return executor.submit(new Callable<Boolean>() {
-         public Boolean call() {
-            return delegate().directoryExists(container, directory);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Void> createDirectory(final String container, final String directory) {
-      return executor.submit(new Callable<Void>() {
-         public Void call() {
-            delegate().createDirectory(container, directory);
-            return null;
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Void> deleteDirectory(final String containerName, final String name) {
-      return executor.submit(new Callable<Void>() {
-         public Void call() {
-            delegate().deleteDirectory(containerName, name);
-            return null;
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Boolean> blobExists(final String container, final String name) {
-      return executor.submit(new Callable<Boolean>() {
-         public Boolean call() {
-            return delegate().blobExists(container, name);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<String> putBlob(final String container, final Blob blob) {
-      return executor.submit(new Callable<String>() {
-         public String call() {
-            return delegate().putBlob(container, blob);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<String> putBlob(final String container, final Blob blob, final PutOptions options) {
-      return executor.submit(new Callable<String>() {
-         public String call() {
-            return delegate().putBlob(container, blob, options);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<BlobMetadata> blobMetadata(final String container, final String key) {
-      return executor.submit(new Callable<BlobMetadata>() {
-         public BlobMetadata call() {
-            return delegate().blobMetadata(container, key);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Blob> getBlob(final String container, final String key) {
-      return executor.submit(new Callable<Blob>() {
-         public Blob call() {
-            return delegate().getBlob(container, key);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Blob> getBlob(final String container, final String key, final GetOptions options) {
-      return executor.submit(new Callable<Blob>() {
-         public Blob call() {
-            return delegate().getBlob(container, key, options);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Void> removeBlob(final String container, final String key) {
-      return executor.submit(new Callable<Void>() {
-         public Void call() {
-            delegate().removeBlob(container, key);
-            return null;
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Long> countBlobs(final String container) {
-      return executor.submit(new Callable<Long>() {
-         public Long call() {
-            return delegate().countBlobs(container);
-         }
-      });
-   }
-
-   @Override
-   public ListenableFuture<Long> countBlobs(final String container, final ListContainerOptions options) {
-      return executor.submit(new Callable<Long>() {
-         public Long call() {
-            return delegate().countBlobs(container, options);
-         }
-      });
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a4e3c1a2/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
----------------------------------------------------------------------
diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
index eb55098..dca61a1 100644
--- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
+++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
@@ -24,6 +24,7 @@ import static org.jclouds.blobstore.options.GetOptions.Builder.ifModifiedSince;
 import static org.jclouds.blobstore.options.GetOptions.Builder.ifUnmodifiedSince;
 import static org.jclouds.blobstore.options.GetOptions.Builder.range;
 import static org.jclouds.concurrent.FutureIterables.awaitCompletion;
+import static org.jclouds.io.ByteStreams2.hashAndClose;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
@@ -55,7 +56,6 @@ import org.jclouds.blobstore.domain.StorageType;
 import org.jclouds.crypto.Crypto;
 import org.jclouds.encryption.internal.JCECrypto;
 import org.jclouds.http.HttpResponseException;
-import org.jclouds.io.ByteStreams2;
 import org.jclouds.io.Payload;
 import org.jclouds.io.Payloads;
 import org.jclouds.io.payloads.ByteSourcePayload;
@@ -67,7 +67,6 @@ import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Charsets;
-import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableMap;
@@ -76,7 +75,6 @@ import com.google.common.collect.Maps;
 import com.google.common.hash.HashCode;
 import com.google.common.io.ByteSource;
 import com.google.common.io.Files;
-import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.Uninterruptibles;
 
@@ -93,10 +91,6 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
       return oneHundredOneConstitutions;
    }
 
-   public static long getOneHundredOneConstitutionsLength() throws IOException {
-      return oneHundredOneConstitutions.size();
-   }
-
    /**
     * Attempt to capture the issue detailed in
     * http://groups.google.com/group/jclouds/browse_thread/thread/4a7c8d58530b287f
@@ -108,7 +102,7 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
       createTestInput(32 * 1024).copyTo(Files.asByteSink(payloadFile));
       
       final Payload testPayload = Payloads.newFilePayload(payloadFile);
-      final HashCode md5 = ByteStreams2.hashAndClose(testPayload.openStream(), md5());
+      final HashCode md5 = hashAndClose(testPayload.openStream(), md5());
       testPayload.getContentMetadata().setContentType("image/png");
       
       final AtomicInteger blobCount = new AtomicInteger();
@@ -127,7 +121,7 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
                   assertConsistencyAwareBlobExists(container, name);
                   blob = view.getBlobStore().getBlob(container, name);
 
-                  assertEquals(ByteStreams2.hashAndClose(blob.getPayload().openStream(), md5()), md5,
+                  assertEquals(hashAndClose(blob.getPayload().openStream(), md5()), md5,
                            String.format("md5 didn't match on %s/%s", container, name));
 
                   view.getBlobStore().removeBlob(container, name);
@@ -158,23 +152,19 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
          uploadByteSource(container, name, expectedContentDisposition, supplier);
          Map<Integer, ListenableFuture<?>> responses = Maps.newHashMap();
          for (int i = 0; i < 10; i++) {
-
-            responses.put(i, Futures.transform(view.getAsyncBlobStore().getBlob(container, name),
-                     new Function<Blob, Void>() {
-
-                        @Override
-                        public Void apply(Blob from) {
-                           try {
-                              validateMetadata(from.getMetadata(), container, name);
-                              assertEquals(ByteStreams2.hashAndClose(from.getPayload().openStream(), md5()), supplier.hash(md5()));
-                              checkContentDisposition(from, expectedContentDisposition);
-                           } catch (IOException e) {
-                              Throwables.propagate(e);
-                           }
-                           return null;
-                        }
-
-                     }, this.exec));
+            responses.put(i, this.exec.submit(new Callable<Void>() {
+               @Override public Void call() throws Exception {
+                  try {
+                     Blob blob = view.getBlobStore().getBlob(container, name);
+                     validateMetadata(blob.getMetadata(), container, name);
+                     assertEquals(hashAndClose(blob.getPayload().openStream(), md5()), supplier.hash(md5()));
+                     checkContentDisposition(blob, expectedContentDisposition);
+                  } catch (IOException e) {
+                     Throwables.propagate(e);
+                  }
+                  return null;
+               }
+            }));
          }
          Map<Integer, Exception> exceptions = awaitCompletion(responses, exec, 30000l, Logger.CONSOLE,
                   "get constitution");