Repository: jclouds-examples Updated Branches: refs/heads/master 0347a90e2 -> ce3365b82
Fixes to Cloud Files examples from PR #50 Project: http://git-wip-us.apache.org/repos/asf/jclouds-examples/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-examples/commit/ce3365b8 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-examples/tree/ce3365b8 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-examples/diff/ce3365b8 Branch: refs/heads/master Commit: ce3365b82415a7df0297293cc4f122f4c8109ceb Parents: 0347a90 Author: Everett Toews <[email protected]> Authored: Tue Jun 10 14:31:09 2014 -0500 Committer: Everett Toews <[email protected]> Committed: Tue Jun 10 15:39:58 2014 -0500 ---------------------------------------------------------------------- .../jclouds/examples/rackspace/SmokeTest.java | 1 + .../rackspace/cloudfiles/CloudFilesPublish.java | 8 ++- .../rackspace/cloudfiles/GenerateTempURL.java | 25 ++++---- .../rackspace/cloudfiles/GetContainer.java | 3 - .../cloudfiles/UploadDirectoryToCDN.java | 64 +++++++++++--------- 5 files changed, 54 insertions(+), 47 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-examples/blob/ce3365b8/rackspace/src/main/java/org/jclouds/examples/rackspace/SmokeTest.java ---------------------------------------------------------------------- diff --git a/rackspace/src/main/java/org/jclouds/examples/rackspace/SmokeTest.java b/rackspace/src/main/java/org/jclouds/examples/rackspace/SmokeTest.java index 3eb1434..a6539dd 100644 --- a/rackspace/src/main/java/org/jclouds/examples/rackspace/SmokeTest.java +++ b/rackspace/src/main/java/org/jclouds/examples/rackspace/SmokeTest.java @@ -62,6 +62,7 @@ public class SmokeTest { CloudFilesPublish.main(args); CreateContainer.main(args); ListContainers.main(args); + GenerateTempURL.main(args); UploadObjects.main(args); ListObjects.main(args); CrossOriginResourceSharingContainer.main(args); http://git-wip-us.apache.org/repos/asf/jclouds-examples/blob/ce3365b8/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/CloudFilesPublish.java ---------------------------------------------------------------------- diff --git a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/CloudFilesPublish.java b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/CloudFilesPublish.java index bc69671..0e00cab 100644 --- a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/CloudFilesPublish.java +++ b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/CloudFilesPublish.java @@ -23,6 +23,8 @@ import static org.jclouds.examples.rackspace.cloudfiles.Constants.FILENAME; import static org.jclouds.examples.rackspace.cloudfiles.Constants.PROVIDER; import static org.jclouds.examples.rackspace.cloudfiles.Constants.REGION; import static org.jclouds.examples.rackspace.cloudfiles.Constants.SUFFIX; +import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.STATIC_WEB_ERROR; +import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.STATIC_WEB_INDEX; import java.io.Closeable; import java.io.File; @@ -85,10 +87,10 @@ public class CloudFilesPublish implements Closeable { */ private void createContainer() { System.out.format("Create Container%n"); - // create a Multimap for the static web headers + Multimap<String, String> enableStaticWebHeaders = - ImmutableMultimap.of(SwiftHeaders.STATIC_WEB_INDEX, FILENAME + SUFFIX, - SwiftHeaders.STATIC_WEB_ERROR, "error.html"); + ImmutableMultimap.of(STATIC_WEB_INDEX, FILENAME + SUFFIX, + STATIC_WEB_ERROR, "error.html"); CreateContainerOptions opts = new CreateContainerOptions().headers(enableStaticWebHeaders); cloudFiles.getContainerApiForRegion(REGION).create(CONTAINER_PUBLISH, opts); http://git-wip-us.apache.org/repos/asf/jclouds-examples/blob/ce3365b8/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GenerateTempURL.java ---------------------------------------------------------------------- diff --git a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GenerateTempURL.java b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GenerateTempURL.java index 72e0fb2..4abfe93 100644 --- a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GenerateTempURL.java +++ b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GenerateTempURL.java @@ -18,11 +18,9 @@ */ package org.jclouds.examples.rackspace.cloudfiles; -import com.google.common.base.Charsets; import com.google.common.io.ByteSource; import com.google.common.io.Closeables; import com.google.common.io.Files; - import org.jclouds.ContextBuilder; import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.BlobStoreContext; @@ -32,7 +30,7 @@ import org.jclouds.http.HttpResponse; import org.jclouds.http.HttpResponseException; import org.jclouds.io.Payload; import org.jclouds.io.Payloads; -import org.jclouds.util.Strings2; +import org.jclouds.openstack.swift.v1.blobstore.RegionScopedBlobStoreContext; import java.io.Closeable; import java.io.File; @@ -40,6 +38,7 @@ import java.io.IOException; import static org.jclouds.examples.rackspace.cloudfiles.Constants.CONTAINER; import static org.jclouds.examples.rackspace.cloudfiles.Constants.PROVIDER; +import static org.jclouds.examples.rackspace.cloudfiles.Constants.REGION; /** * The Temporary URL feature (TempURL) allows you to create limited-time Internet addresses which allow you to grant @@ -62,7 +61,7 @@ public class GenerateTempURL implements Closeable { private static final int TEN_MINUTES = 10 * 60; private final BlobStore blobStore; - private final BlobStoreContext blobStoreContext; + private final RegionScopedBlobStoreContext blobStoreContext; /** * To get a username and API key see http://jclouds.apache.org/guides/rackspace/ @@ -89,8 +88,8 @@ public class GenerateTempURL implements Closeable { public GenerateTempURL(String username, String apiKey) { blobStoreContext = ContextBuilder.newBuilder(PROVIDER) .credentials(username, apiKey) - .buildView(BlobStoreContext.class); - blobStore = blobStoreContext.getBlobStore(); + .buildView(RegionScopedBlobStoreContext.class); + blobStore = blobStoreContext.blobStoreInRegion(REGION); } private void generatePutTempURL() throws IOException { @@ -105,7 +104,7 @@ public class GenerateTempURL implements Closeable { Blob blob = blobStore.blobBuilder(FILENAME).payload(payload).contentType("text/plain").build(); HttpRequest request = blobStoreContext.getSigner().signPutBlob(CONTAINER, blob, TEN_MINUTES); - System.out.format(" %s %s", request.getMethod(), request.getEndpoint()); + System.out.format(" %s %s%n", request.getMethod(), request.getEndpoint()); // PUT the file using jclouds HttpResponse response = blobStoreContext.utils().http().invoke(request); @@ -124,16 +123,18 @@ public class GenerateTempURL implements Closeable { HttpRequest request = blobStoreContext.getSigner().signGetBlob(CONTAINER, FILENAME, TEN_MINUTES); - System.out.format(" %s %s", request.getMethod(), request.getEndpoint()); + System.out.format(" %s %s%n", request.getMethod(), request.getEndpoint()); // GET the file using jclouds File file = File.createTempFile(FILENAME, ".tmp"); + Payload payload = blobStoreContext.utils().http().invoke(request).getPayload(); + try { - String content = Strings2.toString(blobStoreContext.utils().http().invoke(request).getPayload()); - Files.write(content, file, Charsets.UTF_8); - + Files.asByteSink(file).writeFrom(payload.openStream()); + System.out.format(" GET Success (%s)%n", file.getAbsolutePath()); } finally { + payload.release(); file.delete(); } } @@ -143,7 +144,7 @@ public class GenerateTempURL implements Closeable { HttpRequest request = blobStoreContext.getSigner().signRemoveBlob(CONTAINER, FILENAME); - System.out.format(" %s %s", request.getMethod(), request.getEndpoint()); + System.out.format(" %s %s%n", request.getMethod(), request.getEndpoint()); // DELETE the file using jclouds HttpResponse response = blobStoreContext.utils().http().invoke(request); http://git-wip-us.apache.org/repos/asf/jclouds-examples/blob/ce3365b8/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GetContainer.java ---------------------------------------------------------------------- diff --git a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GetContainer.java b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GetContainer.java index 1f128e4..0d62448 100644 --- a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GetContainer.java +++ b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GetContainer.java @@ -33,9 +33,6 @@ import com.google.common.io.Closeables; /** * Create a Cloud Files container with some metadata associated with it. - * - * @author Everett Toews - * @author Jeremy Daggett */ public class GetContainer implements Closeable { private final CloudFilesApi cloudFiles; http://git-wip-us.apache.org/repos/asf/jclouds-examples/blob/ce3365b8/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/UploadDirectoryToCDN.java ---------------------------------------------------------------------- diff --git a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/UploadDirectoryToCDN.java b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/UploadDirectoryToCDN.java index 1527a05..ad04f95 100644 --- a/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/UploadDirectoryToCDN.java +++ b/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/UploadDirectoryToCDN.java @@ -18,29 +18,8 @@ */ package org.jclouds.examples.rackspace.cloudfiles; -import static com.google.common.base.Preconditions.checkArgument; -import static java.util.concurrent.Executors.newFixedThreadPool; -import static org.jclouds.examples.rackspace.cloudfiles.Constants.PROVIDER; -import static org.jclouds.examples.rackspace.cloudfiles.Constants.REGION; - -import java.io.Closeable; -import java.io.File; -import java.io.IOException; -import java.net.URI; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; - -import org.jclouds.ContextBuilder; -import org.jclouds.blobstore.BlobStore; -import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.domain.Blob; -import org.jclouds.io.Payloads; -import org.jclouds.openstack.swift.v1.options.UpdateContainerOptions; -import org.jclouds.openstack.swift.v1.reference.SwiftHeaders; -import org.jclouds.rackspace.cloudfiles.v1.CloudFilesApi; - import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.io.ByteSource; @@ -51,6 +30,30 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; +import org.jclouds.ContextBuilder; +import org.jclouds.blobstore.BlobStore; +import org.jclouds.blobstore.domain.Blob; +import org.jclouds.domain.Location; +import org.jclouds.io.Payloads; +import org.jclouds.openstack.swift.v1.blobstore.RegionScopedBlobStoreContext; +import org.jclouds.openstack.swift.v1.options.UpdateContainerOptions; +import org.jclouds.rackspace.cloudfiles.v1.CloudFilesApi; + +import java.io.Closeable; +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; + +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.collect.Iterables.getOnlyElement; +import static java.util.concurrent.Executors.newFixedThreadPool; +import static org.jclouds.examples.rackspace.cloudfiles.Constants.PROVIDER; +import static org.jclouds.examples.rackspace.cloudfiles.Constants.REGION; +import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.STATIC_WEB_ERROR; +import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.STATIC_WEB_INDEX; /** * Upload an entire directory and all of its sub-directories to a Cloud Files container. The local directory hierarchy @@ -87,9 +90,10 @@ public class UploadDirectoryToCDN implements Closeable { } public UploadDirectoryToCDN(String username, String apiKey) { - ContextBuilder builder = ContextBuilder.newBuilder(PROVIDER) - .credentials(username, apiKey); - blobStore = builder.buildView(BlobStoreContext.class).getBlobStore(); + RegionScopedBlobStoreContext context = ContextBuilder.newBuilder(PROVIDER) + .credentials(username, apiKey) + .buildView(RegionScopedBlobStoreContext.class); + blobStore = context.blobStoreInRegion(REGION); cloudFiles = blobStore.getContext().unwrapApi(CloudFilesApi.class); } @@ -99,10 +103,12 @@ public class UploadDirectoryToCDN implements Closeable { private void uploadDirectory(String dirPath, String container) throws InterruptedException, ExecutionException { File dir = new File(dirPath); checkArgument(dir.isDirectory(), "%s is not a directory", dirPath); - + System.out.format("Uploading %s to %s", dirPath, container); - blobStore.createContainerInLocation(null, container); + // There is only one assignable location because we are using the RegionScopedBlobStoreContext + Location location = getOnlyElement(blobStore.listAssignableLocations()); + blobStore.createContainerInLocation(location, container); List<BlobDetail> blobDetails = Lists.newArrayList(); generateFileList(dir, "", blobDetails); @@ -171,8 +177,8 @@ public class UploadDirectoryToCDN implements Closeable { private void enableCdnContainer(String container) { System.out.format("Enable CDN%n"); Multimap<String, String> enableStaticWebHeaders = - ImmutableMultimap.of(SwiftHeaders.STATIC_WEB_INDEX, "index.html", - SwiftHeaders.STATIC_WEB_ERROR, "error.html"); + ImmutableMultimap.of(STATIC_WEB_INDEX, "index.html", + STATIC_WEB_ERROR, "error.html"); UpdateContainerOptions opts = new UpdateContainerOptions().headers(enableStaticWebHeaders); cloudFiles.getContainerApiForRegion(REGION).update(container, opts);
