From a1c26e570157cb9b31097f91c22dfbc186c763f9 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Tue, 24 Apr 2012 21:19:11 -0400 Subject: [PATCH] Using the new context view (see http://code.google.com/p/jclouds/issues/detail?id=904) in gae-tweetstore --- .../tweetstore/config/GuiceServletConfig.java | 12 ++++----- .../controller/AddTweetsController.java | 4 +-- .../controller/EnqueueStoresController.java | 2 +- .../controller/StoreTweetsController.java | 6 ++--- .../ServiceToStoredTweetStatuses.java | 11 +++++--- .../controller/AddTweetsControllerTest.java | 10 +++---- .../EnqueueStoresControllerTest.java | 12 ++++----- .../controller/StoreTweetsControllerTest.java | 16 +++++------ .../functions/KeyToStoredTweetStatusTest.java | 6 ++--- .../ServiceToStoredTweetStatusesTest.java | 11 ++++---- .../integration/TweetStoreLiveTest.java | 27 ++++++++++--------- 11 files changed, 61 insertions(+), 56 deletions(-) diff --git a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/config/GuiceServletConfig.java b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/config/GuiceServletConfig.java index 7f9364c47e..2db9a45034 100644 --- a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/config/GuiceServletConfig.java +++ b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/config/GuiceServletConfig.java @@ -38,8 +38,8 @@ import java.util.Set; import javax.servlet.ServletContextEvent; +import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextBuilder; import org.jclouds.demo.tweetstore.config.util.CredentialsCollector; import org.jclouds.demo.tweetstore.controller.AddTweetsController; import org.jclouds.demo.tweetstore.controller.EnqueueStoresController; @@ -73,7 +73,7 @@ import com.google.inject.servlet.ServletModule; public class GuiceServletConfig extends GuiceServletContextListener { public static final String PROPERTY_BLOBSTORE_CONTEXTS = "blobstore.contexts"; - private Map> providerTypeToBlobStoreMap; + private Map providerTypeToBlobStoreMap; private Twitter twitterClient; private String container; private Queue queue; @@ -102,8 +102,8 @@ public class GuiceServletConfig extends GuiceServletContextListener { // instantiate and store references to all blobstores by provider name providerTypeToBlobStoreMap = Maps.newHashMap(); for (String hint : getBlobstoreContexts(props)) { - providerTypeToBlobStoreMap.put(hint, BlobStoreContextBuilder - .newBuilder(hint).modules(modules).overrides(props).build()); + providerTypeToBlobStoreMap.put(hint, ContextBuilder.newBuilder(hint) + .modules(modules).overrides(props).build(BlobStoreContext.class)); } // get a queue for submitting store tweet requests @@ -140,7 +140,7 @@ public class GuiceServletConfig extends GuiceServletContextListener { return Guice.createInjector(new ServletModule() { @Override protected void configureServlets() { - bind(new TypeLiteral>>() { + bind(new TypeLiteral>() { }).toInstance(providerTypeToBlobStoreMap); bind(Twitter.class).toInstance(twitterClient); bind(Queue.class).toInstance(queue); @@ -154,7 +154,7 @@ public class GuiceServletConfig extends GuiceServletContextListener { @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { - for (BlobStoreContext context : providerTypeToBlobStoreMap.values()) { + for (BlobStoreContext context : providerTypeToBlobStoreMap.values()) { context.close(); } queue.purge(); diff --git a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/AddTweetsController.java b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/AddTweetsController.java index 299448a481..b681cfb27d 100644 --- a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/AddTweetsController.java +++ b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/AddTweetsController.java @@ -54,14 +54,14 @@ public class AddTweetsController extends HttpServlet implements /** The serialVersionUID */ private static final long serialVersionUID = 3888348023150822683L; - private final Map> contexts; + private final Map contexts; private final ServiceToStoredTweetStatuses blobStoreContextToContainerResult; @Resource protected Logger logger = Logger.NULL; @Inject - AddTweetsController(Map> contexts, + AddTweetsController(Map contexts, ServiceToStoredTweetStatuses blobStoreContextToContainerResult) { this.contexts = contexts; this.blobStoreContextToContainerResult = blobStoreContextToContainerResult; diff --git a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresController.java b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresController.java index 150dff0f6c..94568e4dec 100644 --- a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresController.java +++ b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresController.java @@ -60,7 +60,7 @@ public class EnqueueStoresController extends HttpServlet { protected Logger logger = Logger.NULL; @Inject - public EnqueueStoresController(Map> contexts, + public EnqueueStoresController(Map contexts, Queue taskQueue) { contextNames = contexts.keySet(); this.taskQueue = taskQueue; diff --git a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/StoreTweetsController.java b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/StoreTweetsController.java index 95453e0894..ae00c69d20 100644 --- a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/StoreTweetsController.java +++ b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/controller/StoreTweetsController.java @@ -73,7 +73,7 @@ public class StoreTweetsController extends HttpServlet { /** The serialVersionUID */ private static final long serialVersionUID = 7215420527854203714L; - private final Map> contexts; + private final Map contexts; private final Twitter client; private final String container; @@ -82,7 +82,7 @@ public class StoreTweetsController extends HttpServlet { @Inject @VisibleForTesting - public StoreTweetsController(Map> contexts, + public StoreTweetsController(Map contexts, @Named(TweetStoreConstants.PROPERTY_TWEETSTORE_CONTAINER) String container, Twitter client) { this.container = container; this.contexts = contexts; @@ -91,7 +91,7 @@ public class StoreTweetsController extends HttpServlet { @VisibleForTesting public void addMyTweets(String contextName, Iterable responseList) { - BlobStoreContext context = checkNotNull(contexts.get(contextName), "no context for " + contextName + " in " + BlobStoreContext context = checkNotNull(contexts.get(contextName), "no context for " + contextName + " in " + contexts.keySet()); BlobMap map = context.createBlobMap(container); for (Status status : responseList) { diff --git a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatuses.java b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatuses.java index 36437544d4..165c1fc3e4 100644 --- a/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatuses.java +++ b/demos/tweetstore/gae-tweetstore/src/main/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatuses.java @@ -18,6 +18,7 @@ */ package org.jclouds.demo.tweetstore.functions; +import java.net.URI; import java.util.Collections; import java.util.Map; import java.util.Set; @@ -27,6 +28,7 @@ import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; +import org.jclouds.Context; import org.jclouds.blobstore.BlobMap; import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.demo.tweetstore.domain.StoredTweetStatus; @@ -39,11 +41,11 @@ import com.google.common.collect.Iterables; @Singleton public class ServiceToStoredTweetStatuses implements Function> { - private final Map> contexts; + private final Map contexts; private final String container; @Inject - public ServiceToStoredTweetStatuses(Map> contexts, + public ServiceToStoredTweetStatuses(Map contexts, @Named(TweetStoreConstants.PROPERTY_TWEETSTORE_CONTAINER) String container) { this.contexts = contexts; this.container = container; @@ -53,8 +55,9 @@ public class ServiceToStoredTweetStatuses implements Function apply(String service) { - BlobStoreContext context = contexts.get(service); - String host = context.getProviderSpecificContext().getEndpoint().getHost(); + BlobStoreContext context = contexts.get(service); + String host = URI.create(context.unwrap(Context.class).getProviderMetadata() + .getEndpoint()).getHost(); try { BlobMap blobMap = context.createBlobMap(container); Set blobs = blobMap.keySet(); diff --git a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/AddTweetsControllerTest.java b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/AddTweetsControllerTest.java index d6989d8bbe..1c93403650 100644 --- a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/AddTweetsControllerTest.java +++ b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/AddTweetsControllerTest.java @@ -25,8 +25,8 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; +import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextBuilder; import org.jclouds.blobstore.TransientApiMetadata; import org.jclouds.blobstore.domain.Blob; import org.jclouds.demo.tweetstore.domain.StoredTweetStatus; @@ -46,12 +46,12 @@ import com.google.common.collect.ImmutableSet; @Test(groups = "unit") public class AddTweetsControllerTest { - Map> createServices(String container) throws InterruptedException, + Map createServices(String container) throws InterruptedException, ExecutionException { - Map> services = Maps.newHashMap(); + Map services = Maps.newHashMap(); TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build(); for (String name : new String[] { "1", "2" }) { - BlobStoreContext context = BlobStoreContextBuilder.newBuilder(transientApiMetadata).build(); + BlobStoreContext context = ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class); context.getAsyncBlobStore().createContainerInLocation(null, container).get(); Blob blob = context.getAsyncBlobStore().blobBuilder("1").build(); blob.getMetadata().getUserMetadata().put(TweetStoreConstants.SENDER_NAME, "frank"); @@ -64,7 +64,7 @@ public class AddTweetsControllerTest { public void testStoreTweets() throws IOException, InterruptedException, ExecutionException { String container = "container"; - Map> contexts = createServices(container); + Map contexts = createServices(container); ServiceToStoredTweetStatuses function = new ServiceToStoredTweetStatuses(contexts, container); AddTweetsController controller = new AddTweetsController(contexts, function); diff --git a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresControllerTest.java b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresControllerTest.java index 435285b62c..5190718e4c 100644 --- a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresControllerTest.java +++ b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/EnqueueStoresControllerTest.java @@ -26,8 +26,8 @@ import static org.easymock.EasyMock.verify; import java.util.Map; +import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextBuilder; import org.jclouds.blobstore.TransientApiMetadata; import org.testng.annotations.Test; @@ -43,16 +43,16 @@ import com.google.common.collect.ImmutableMap; @Test(groups = "unit") public class EnqueueStoresControllerTest { - Map> createBlobStores() { + Map createBlobStores() { TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build(); - Map> contexts = ImmutableMap.>of( - "test1", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build(), - "test2", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build()); + Map contexts = ImmutableMap.of( + "test1", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class), + "test2", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class)); return contexts; } public void testEnqueueStores() { - Map> stores = createBlobStores(); + Map stores = createBlobStores(); Queue taskQueue = createMock(Queue.class); EnqueueStoresController function = new EnqueueStoresController(stores, taskQueue); diff --git a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/StoreTweetsControllerTest.java b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/StoreTweetsControllerTest.java index cb89719fd5..e592355bbf 100644 --- a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/StoreTweetsControllerTest.java +++ b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/controller/StoreTweetsControllerTest.java @@ -30,9 +30,9 @@ import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ExecutionException; +import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobMap; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextBuilder; import org.jclouds.blobstore.TransientApiMetadata; import org.jclouds.blobstore.domain.Blob; import org.jclouds.demo.tweetstore.reference.TweetStoreConstants; @@ -57,19 +57,19 @@ public class StoreTweetsControllerTest { return createMock(Twitter.class); } - Map> createBlobStores() throws InterruptedException, ExecutionException { + Map createBlobStores() throws InterruptedException, ExecutionException { TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build(); - Map> contexts = ImmutableMap.>of( - "test1", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build(), - "test2", BlobStoreContextBuilder.newBuilder(transientApiMetadata).build()); - for (BlobStoreContext blobstore : contexts.values()) { + Map contexts = ImmutableMap.of( + "test1", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class), + "test2", ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class)); + for (BlobStoreContext blobstore : contexts.values()) { blobstore.getAsyncBlobStore().createContainerInLocation(null, "favo").get(); } return contexts; } public void testStoreTweets() throws IOException, InterruptedException, ExecutionException { - Map> stores = createBlobStores(); + Map stores = createBlobStores(); StoreTweetsController function = new StoreTweetsController(stores, "favo", createTwitter()); User frank = createMock(User.class); @@ -101,7 +101,7 @@ public class StoreTweetsControllerTest { verify(jimmy); verify(jimmyStatus); - for (Entry> entry : stores.entrySet()) { + for (Entry entry : stores.entrySet()) { BlobMap map = entry.getValue().createBlobMap("favo"); Blob frankBlob = map.get("1"); assertEquals(frankBlob.getMetadata().getName(), "1"); diff --git a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/KeyToStoredTweetStatusTest.java b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/KeyToStoredTweetStatusTest.java index 4c05f7ac68..2667a87fd2 100644 --- a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/KeyToStoredTweetStatusTest.java +++ b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/KeyToStoredTweetStatusTest.java @@ -23,9 +23,9 @@ import static org.testng.Assert.assertEquals; import java.io.IOException; import java.util.concurrent.ExecutionException; +import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobMap; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextBuilder; import org.jclouds.blobstore.TransientApiMetadata; import org.jclouds.blobstore.domain.Blob; import org.jclouds.demo.tweetstore.domain.StoredTweetStatus; @@ -41,8 +41,8 @@ import org.testng.annotations.Test; public class KeyToStoredTweetStatusTest { BlobMap createMap() throws InterruptedException, ExecutionException { - BlobStoreContext context = - BlobStoreContextBuilder.newBuilder(TransientApiMetadata.builder().build()).build(); + BlobStoreContext context = + ContextBuilder.newBuilder(TransientApiMetadata.builder().build()).build(BlobStoreContext.class); context.getBlobStore().createContainerInLocation(null, "test1"); return context.createBlobMap("test1"); } diff --git a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatusesTest.java b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatusesTest.java index 54deb948db..6bce7f8e8e 100644 --- a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatusesTest.java +++ b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/functions/ServiceToStoredTweetStatusesTest.java @@ -24,8 +24,8 @@ import java.io.IOException; import java.util.Map; import java.util.concurrent.ExecutionException; +import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextBuilder; import org.jclouds.blobstore.TransientApiMetadata; import org.jclouds.blobstore.domain.Blob; import org.jclouds.demo.tweetstore.domain.StoredTweetStatus; @@ -43,12 +43,13 @@ import com.google.common.collect.Iterables; @Test(groups = "unit") public class ServiceToStoredTweetStatusesTest { - Map> createServices(String container) throws InterruptedException, + Map createServices(String container) throws InterruptedException, ExecutionException { - Map> services = Maps.newHashMap(); + Map services = Maps.newHashMap(); TransientApiMetadata transientApiMetadata = TransientApiMetadata.builder().build(); for (String name : new String[] { "1", "2" }) { - BlobStoreContext context = BlobStoreContextBuilder.newBuilder(transientApiMetadata).build(); + BlobStoreContext context = + ContextBuilder.newBuilder(transientApiMetadata).build(BlobStoreContext.class); context.getAsyncBlobStore().createContainerInLocation(null, container).get(); Blob blob = context.getAsyncBlobStore().blobBuilder("1").build(); blob.getMetadata().getUserMetadata().put(TweetStoreConstants.SENDER_NAME, "frank"); @@ -61,7 +62,7 @@ public class ServiceToStoredTweetStatusesTest { public void testStoreTweets() throws IOException, InterruptedException, ExecutionException { String container = "container"; - Map> contexts = createServices(container); + Map contexts = createServices(container); ServiceToStoredTweetStatuses function = new ServiceToStoredTweetStatuses(contexts, container); diff --git a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/integration/TweetStoreLiveTest.java b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/integration/TweetStoreLiveTest.java index 15073996ec..3265e752e9 100644 --- a/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/integration/TweetStoreLiveTest.java +++ b/demos/tweetstore/gae-tweetstore/src/test/java/org/jclouds/demo/tweetstore/integration/TweetStoreLiveTest.java @@ -37,8 +37,9 @@ import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; +import org.jclouds.Context; +import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextBuilder; import org.jclouds.demo.tweetstore.config.GuiceServletConfig; import org.jclouds.demo.tweetstore.controller.StoreTweetsController; import org.jclouds.logging.log4j.config.Log4JLoggingModule; @@ -73,7 +74,7 @@ import com.google.inject.Module; public class TweetStoreLiveTest { GoogleDevServer server; private URL url; - private Map> contexts; + private Map contexts; private String container; private static final Iterable blobstores = Splitter.on(',').split(System.getProperty(PROPERTY_TWEETSTORE_BLOBSTORES, @@ -99,8 +100,8 @@ public class TweetStoreLiveTest { this.contexts = Maps.newConcurrentMap(); for (String provider : blobstores) { - contexts.put(provider, BlobStoreContextBuilder.newBuilder(provider) - .modules(wiring).overrides(props).build()); + contexts.put(provider, ContextBuilder.newBuilder(provider) + .modules(wiring).overrides(props).build(BlobStoreContext.class)); } Configuration conf = new ConfigurationBuilder() @@ -115,11 +116,11 @@ public class TweetStoreLiveTest { ResponseList statuses = client.getMentions(); boolean deleted = false; - for (BlobStoreContext context : contexts.values()) { + for (BlobStoreContext context : contexts.values()) { try { if (context.getBlobStore().containerExists(container)) { - System.err.printf("deleting container %s at %s%n", container, context.getProviderSpecificContext() - .getEndpoint()); + System.err.printf("deleting container %s at %s%n", container, + context.unwrap(Context.class).getProviderMetadata().getEndpoint()); context.getBlobStore().deleteContainer(container); deleted = true; } @@ -131,9 +132,9 @@ public class TweetStoreLiveTest { System.err.println("sleeping 60 seconds to allow containers to clear"); Thread.sleep(60000); } - for (BlobStoreContext context : contexts.values()) { - System.err.printf("creating container %s at %s%n", container, context.getProviderSpecificContext() - .getEndpoint()); + for (BlobStoreContext context : contexts.values()) { + System.err.printf("creating container %s at %s%n", container, + context.unwrap(Context.class).getProviderMetadata().getEndpoint()); context.getBlobStore().createContainerInLocation(null, container); } @@ -142,7 +143,7 @@ public class TweetStoreLiveTest { Thread.sleep(5000); } - for (Entry> entry : contexts.entrySet()) { + for (Entry entry : contexts.entrySet()) { System.err.printf("filling container %s at %s%n", container, entry.getKey()); controller.addMyTweets(entry.getKey(), statuses); } @@ -210,8 +211,8 @@ public class TweetStoreLiveTest { System.err.println("sleeping 20 seconds to allow for eventual consistency delay"); Thread.sleep(20000); - for (BlobStoreContext context : contexts.values()) { - assert context.createInputStreamMap(container).size() > 0 : context.getProviderSpecificContext().getEndpoint(); + for (BlobStoreContext context : contexts.values()) { + assert context.createInputStreamMap(container).size() > 0 : context.unwrap(Context.class).getProviderMetadata().getEndpoint(); } }