From aeffae6b2c696cafc27bdff5055e73ae4fc2fac5 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Wed, 17 Apr 2013 11:54:43 +0100 Subject: [PATCH] Removing async API from blobstore-largeblob --- blobstore-largeblob/pom.xml | 57 ++++++++++++---------- .../src/main/assembly/jar-with-dependencies.xml | 24 +++++++++ .../examples/blobstore/largeblob/MainApp.java | 50 +++++++++---------- 3 files changed, 77 insertions(+), 54 deletions(-) create mode 100644 blobstore-largeblob/src/main/assembly/jar-with-dependencies.xml diff --git a/blobstore-largeblob/pom.xml b/blobstore-largeblob/pom.xml index 64de91d..ca018a2 100644 --- a/blobstore-largeblob/pom.xml +++ b/blobstore-largeblob/pom.xml @@ -28,55 +28,59 @@ under the License. blobstore-largeblob jclouds blobstore example that creates a container, then uploads a large file using parallel multipart upload + + 1.6.1-incubating + + - org.jclouds + org.apache.jclouds jclouds-blobstore - 1.5.0-beta.3 + ${jclouds.version} - org.jclouds + org.apache.jclouds jclouds-allblobstore - 1.5.0-beta.3 + ${jclouds.version} - org.jclouds.driver + org.apache.jclouds.driver jclouds-netty - 1.5.0-beta.3 + ${jclouds.version} - org.jclouds.driver + org.apache.jclouds.driver jclouds-apachehc - 1.5.0-beta.3 + ${jclouds.version} - org.jclouds.driver + org.apache.jclouds.driver jclouds-log4j - 1.5.0-beta.3 + ${jclouds.version} - org.jclouds.driver + org.apache.jclouds.driver jclouds-slf4j - 1.5.0-beta.3 + ${jclouds.version} + remove the above dependency and place something + like below --> + ${project.artifactId} - - org.apache.maven.plugins maven-jar-plugin + 2.4 @@ -88,10 +92,13 @@ under the License. maven-assembly-plugin + 2.4 - - jar-with-dependencies - + + + src/main/assembly/jar-with-dependencies.xml + org.jclouds.examples.blobstore.largeblob.MainApp @@ -109,7 +116,5 @@ under the License. - - diff --git a/blobstore-largeblob/src/main/assembly/jar-with-dependencies.xml b/blobstore-largeblob/src/main/assembly/jar-with-dependencies.xml new file mode 100644 index 0000000..e415754 --- /dev/null +++ b/blobstore-largeblob/src/main/assembly/jar-with-dependencies.xml @@ -0,0 +1,24 @@ + + + + jar-with-dependencies + + jar + + false + + + metaInf-services + + + + + / + true + true + runtime + + + \ No newline at end of file diff --git a/blobstore-largeblob/src/main/java/org/jclouds/examples/blobstore/largeblob/MainApp.java b/blobstore-largeblob/src/main/java/org/jclouds/examples/blobstore/largeblob/MainApp.java index 7e6eccd..b7d5cb7 100755 --- a/blobstore-largeblob/src/main/java/org/jclouds/examples/blobstore/largeblob/MainApp.java +++ b/blobstore-largeblob/src/main/java/org/jclouds/examples/blobstore/largeblob/MainApp.java @@ -19,6 +19,7 @@ package org.jclouds.examples.blobstore.largeblob; +import static com.google.common.collect.Iterables.transform; import static org.jclouds.Constants.PROPERTY_ENDPOINT; import static org.jclouds.blobstore.options.PutOptions.Builder.multipart; import static org.jclouds.location.reference.LocationConstants.ENDPOINT; @@ -26,26 +27,24 @@ import java.io.File; import java.io.IOException; +import java.util.NoSuchElementException; import java.util.Properties; -import java.util.concurrent.ExecutionException; import javax.ws.rs.core.MediaType; +import org.jclouds.ContextBuilder; import org.jclouds.aws.domain.Region; -import org.jclouds.blobstore.AsyncBlobStore; import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.BlobStoreContextFactory; import org.jclouds.blobstore.domain.Blob; -import org.jclouds.blobstore.util.BlobStoreUtils; +import org.jclouds.http.HttpResponseException; import org.jclouds.http.config.JavaUrlHttpCommandExecutorServiceModule; import org.jclouds.logging.log4j.config.Log4JLoggingModule; -import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; import org.jclouds.netty.config.NettyPayloadModule; +import org.jclouds.providers.ProviderMetadata; +import org.jclouds.providers.Providers; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.util.concurrent.ListenableFuture; import com.google.inject.Module; /** @@ -120,10 +119,13 @@ public static void main(String[] args) throws IOException { // Args - String provider = args[0]; - if (!Iterables.contains(BlobStoreUtils.getSupportedProviders(), provider)) - throw new IllegalArgumentException("provider " + provider + " not in supported list: " - + BlobStoreUtils.getSupportedProviders()); + String providerId = args[0]; + ProviderMetadata provider = null; + try { + provider = Providers.withId(providerId); + } catch(NoSuchElementException exception) { + throw new IllegalArgumentException("provider " + providerId + " not in supported list: " + transform(Providers.all(), Providers.idFunction())); + } String identity = args[1]; String credential = args[2]; String fileName = args[3]; @@ -139,17 +141,16 @@ public static void main(String[] args) throws IOException { if (threadcount != null) overrides.setProperty("jclouds.mpu.parallel.degree", threadcount); // without setting, // default is 4 threads - overrides.setProperty(provider + ".identity", identity); - overrides.setProperty(provider + ".credential", credential); - BlobStoreContext context = new BlobStoreContextFactory().createContext(provider, MODULES, overrides); + overrides.setProperty(providerId + ".identity", identity); + overrides.setProperty(providerId + ".credential", credential); + BlobStoreContext context = ContextBuilder.newBuilder(provider).modules(MODULES).overrides(overrides).build(BlobStoreContext.class); try { long start = System.currentTimeMillis(); // Create Container - AsyncBlobStore blobStore = context.getAsyncBlobStore(); // it can be changed to sync + BlobStore blobStore = context.getBlobStore(); // BlobStore - ListenableFuture future = blobStore.createContainerInLocation(null, containerName); - future.get(); + blobStore.createContainerInLocation(null, containerName); File input = new File(fileName); long length = input.length(); @@ -157,19 +158,12 @@ public static void main(String[] args) throws IOException { Blob blob = blobStore.blobBuilder(objectName).payload(input) .contentType(MediaType.APPLICATION_OCTET_STREAM).contentDisposition(objectName).build(); // Upload a file - ListenableFuture futureETag = blobStore.putBlob(containerName, blob, multipart()); - - // asynchronously wait for the upload - String eTag = futureETag.get(); + String eTag = blobStore.putBlob(containerName, blob, multipart()); printSpeed("Sucessfully uploaded eTag(" + eTag + ")", start, length); - - } catch (InterruptedException e) { - System.err.println(e.getMessage()); - e.printStackTrace(); - } catch (ExecutionException e) { - System.err.println(e.getMessage()); - e.printStackTrace(); + } catch(HttpResponseException exception) { + System.err.println(exception.getMessage()); + exception.printStackTrace(); } finally { // Close connecton context.close(); -- 1.8.1.6