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/10/04 08:18:15 UTC

[5/9] git commit: JCLOUDS-296 unasync legacy cloudfiles provider.

JCLOUDS-296 unasync legacy cloudfiles provider.


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

Branch: refs/heads/master
Commit: 0ab1988a7f0b38c35985243e35c4232e62ae72ad
Parents: bbad831
Author: Adrian Cole <ac...@twitter.com>
Authored: Fri Oct 3 19:12:56 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Fri Oct 3 23:14:12 2014 -0700

----------------------------------------------------------------------
 .../cloudfiles/CloudFilesApiMetadata.java       |  30 +--
 .../cloudfiles/CloudFilesAsyncClient.java       | 214 -------------------
 .../jclouds/cloudfiles/CloudFilesClient.java    | 138 ++++++++++--
 .../blobstore/CloudFilesAsyncBlobStore.java     |  98 ---------
 .../CloudFilesBlobStoreContextModule.java       |   3 -
 .../config/CloudFilesHttpApiModule.java         |  92 ++++++++
 .../config/CloudFilesRestClientModule.java      |  99 ---------
 .../cloudfiles/CloudFilesClientLiveTest.java    |   2 +-
 .../CloudFilesBlobSignerExpectTest.java         |   6 +-
 .../config/CloudFilesRestClientModuleTest.java  |  12 +-
 .../cloudfiles/CloudFilesUKClientLiveTest.java  |   3 +-
 11 files changed, 232 insertions(+), 465 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesApiMetadata.java b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesApiMetadata.java
index ce8f261..1c81946 100644
--- a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesApiMetadata.java
+++ b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesApiMetadata.java
@@ -21,31 +21,18 @@ import java.util.Properties;
 
 import org.jclouds.blobstore.BlobRequestSigner;
 import org.jclouds.cloudfiles.blobstore.config.CloudFilesBlobStoreContextModule;
-import org.jclouds.cloudfiles.config.CloudFilesRestClientModule;
-import org.jclouds.cloudfiles.config.CloudFilesRestClientModule.StorageAndCDNManagementEndpointModule;
+import org.jclouds.cloudfiles.config.CloudFilesHttpApiModule;
+import org.jclouds.cloudfiles.config.CloudFilesHttpApiModule.StorageAndCDNManagementEndpointModule;
 import org.jclouds.openstack.swift.SwiftApiMetadata;
 import org.jclouds.openstack.swift.blobstore.SwiftBlobSigner;
 import org.jclouds.openstack.swift.blobstore.config.TemporaryUrlExtensionModule;
 
 import com.google.common.collect.ImmutableSet;
-import com.google.common.reflect.TypeToken;
 import com.google.inject.Module;
 import com.google.inject.TypeLiteral;
 
-/**
- * Implementation of {@link ApiMetadata} for Rackspace Cloud Files API
- */
 public class CloudFilesApiMetadata extends SwiftApiMetadata {
 
-   /**
-    * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(CloudFilesClient.class)} as
-    *             {@link CloudFilesAsyncClient} interface will be removed in jclouds 1.7.
-    */
-   @Deprecated
-   public static final TypeToken<org.jclouds.rest.RestContext<CloudFilesClient, CloudFilesAsyncClient>> CONTEXT_TOKEN = new TypeToken<org.jclouds.rest.RestContext<CloudFilesClient, CloudFilesAsyncClient>>() {
-      private static final long serialVersionUID = 1L;
-   };
-
    @Override
    public Builder toBuilder() {
       return new Builder().fromApiMetadata(this);
@@ -64,20 +51,19 @@ public class CloudFilesApiMetadata extends SwiftApiMetadata {
       return properties;
    }
 
-   public static class Builder extends SwiftApiMetadata.Builder<Builder> {
-      @SuppressWarnings("deprecation")
+   public static class Builder extends SwiftApiMetadata.Builder<CloudFilesClient, Builder> {
+
       protected Builder() {
-         super(CloudFilesClient.class, CloudFilesAsyncClient.class);
+         super(CloudFilesClient.class);
          id("cloudfiles")
          .name("Rackspace Cloud Files API")
          .identityName("Username")
          .credentialName("API Key")
          .documentation(URI.create("http://docs.rackspacecloud.com/files/api/v1/cfdevguide_d5/content/ch01.html"))
          .defaultProperties(CloudFilesApiMetadata.defaultProperties())
-         .context(CONTEXT_TOKEN)
          .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                                      .add(StorageAndCDNManagementEndpointModule.class)
-                                     .add(CloudFilesRestClientModule.class)
+                                     .add(CloudFilesHttpApiModule.class)
                                      .add(CloudFilesBlobStoreContextModule.class)
                                      .add(CloudFilesTemporaryUrlExtensionModule.class).build());
       }
@@ -93,10 +79,10 @@ public class CloudFilesApiMetadata extends SwiftApiMetadata {
       }
    }
 
-   public static class CloudFilesTemporaryUrlExtensionModule extends TemporaryUrlExtensionModule<CloudFilesAsyncClient> {
+   public static class CloudFilesTemporaryUrlExtensionModule extends TemporaryUrlExtensionModule<CloudFilesClient> {
       @Override
       protected void bindRequestSigner() {
-         bind(BlobRequestSigner.class).to(new TypeLiteral<SwiftBlobSigner<CloudFilesAsyncClient>>() {
+         bind(BlobRequestSigner.class).to(new TypeLiteral<SwiftBlobSigner<CloudFilesClient>>() {
          });
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesAsyncClient.java b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesAsyncClient.java
deleted file mode 100644
index 388534b..0000000
--- a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesAsyncClient.java
+++ /dev/null
@@ -1,214 +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.cloudfiles;
-
-import java.net.URI;
-import java.util.Set;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.HEAD;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.blobstore.BlobStoreFallbacks.NullOnContainerNotFound;
-import org.jclouds.cloudfiles.binders.BindIterableToHeadersWithPurgeCDNObjectEmail;
-import org.jclouds.cloudfiles.domain.ContainerCDNMetadata;
-import org.jclouds.cloudfiles.functions.ParseCdnUriFromHeaders;
-import org.jclouds.cloudfiles.functions.ParseContainerCDNMetadataFromHeaders;
-import org.jclouds.cloudfiles.options.ListCdnContainerOptions;
-import org.jclouds.cloudfiles.reference.CloudFilesHeaders;
-import org.jclouds.openstack.filters.AuthenticateRequest;
-import org.jclouds.openstack.swift.Storage;
-import org.jclouds.openstack.swift.SwiftAsyncClient;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.Endpoint;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.Headers;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides asynchronous access to Cloud Files via their REST API.
- * <p/>
- * All commands return a ListenableFuture of the result from Cloud Files. Any exceptions incurred
- * during processing will be backend in an {@link ExecutionException} as documented in
- * {@link ListenableFuture#get()}.
- *
- * @see CloudFilesClient
- * @see <a href="http://www.rackspacecloud.com/cf-devguide-20090812.pdf" />
- * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(CloudFilesClient.class)} as
- *             {@link CloudFilesAsyncClient} interface will be removed in jclouds 1.7.
- */
-@Deprecated
-@RequestFilters(AuthenticateRequest.class)
-@Endpoint(Storage.class)
-public interface CloudFilesAsyncClient extends SwiftAsyncClient {
-
-   /**
-    * @see CloudFilesClient#listCDNContainers
-    */
-   @Named("ListCDNEnabledContainers")
-   @GET
-   @Consumes(MediaType.APPLICATION_JSON)
-   @QueryParams(keys = "format", values = "json")
-   @Path("/")
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<? extends Set<ContainerCDNMetadata>> listCDNContainers(ListCdnContainerOptions... options);
-
-   /**
-    * @see CloudFilesClient#getCDNMetadata
-    */
-   @Named("ListCDNEnabledContainerMetadata")
-   @HEAD
-   @ResponseParser(ParseContainerCDNMetadataFromHeaders.class)
-   @Fallback(NullOnContainerNotFound.class)
-   @Path("/{container}")
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<ContainerCDNMetadata> getCDNMetadata(@PathParam("container") String container);
-
-   /**
-    * @see CloudFilesClient#enableCDN(String, long, boolean);
-    */
-   @Named("CDNEnableContainer")
-   @PUT
-   @Path("/{container}")
-   @Headers(keys = CloudFilesHeaders.CDN_ENABLED, values = "True")
-   @ResponseParser(ParseCdnUriFromHeaders.class)
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<URI> enableCDN(@PathParam("container") String container,
-                                   @HeaderParam(CloudFilesHeaders.CDN_TTL) long ttl,
-                                   @HeaderParam(CloudFilesHeaders.CDN_LOG_RETENTION) boolean logRetention);
-
-   /**
-    * @see CloudFilesClient#enableCDN(String, long);
-    */
-   @Named("CDNEnableContainer")
-   @PUT
-   @Path("/{container}")
-   @Headers(keys = CloudFilesHeaders.CDN_ENABLED, values = "True")
-   @ResponseParser(ParseCdnUriFromHeaders.class)
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<URI> enableCDN(@PathParam("container") String container,
-                                   @HeaderParam(CloudFilesHeaders.CDN_TTL) long ttl);
-
-   /**
-    * @see CloudFilesClient#enableCDN(String)
-    */
-   @Named("CDNEnableContainer")
-   @PUT
-   @Path("/{container}")
-   @Headers(keys = CloudFilesHeaders.CDN_ENABLED, values = "True")
-   @ResponseParser(ParseCdnUriFromHeaders.class)
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<URI> enableCDN(@PathParam("container") String container);
-
-   /**
-    * @see CloudFilesClient#updateCDN(long, boolean)
-    */
-   @Named("UpdateCDNEnabledContainerMetadata")
-   @POST
-   @Path("/{container}")
-   @ResponseParser(ParseCdnUriFromHeaders.class)
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<URI> updateCDN(@PathParam("container") String container,
-                                   @HeaderParam(CloudFilesHeaders.CDN_TTL) long ttl,
-                                   @HeaderParam(CloudFilesHeaders.CDN_LOG_RETENTION) boolean logRetention);
-
-   /**
-    * @see CloudFilesClient#updateCDN(boolean)
-    */
-   @Named("UpdateCDNEnabledContainerMetadata")
-   @POST
-   @Path("/{container}")
-   @ResponseParser(ParseCdnUriFromHeaders.class)
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<URI> updateCDN(@PathParam("container") String container,
-                                   @HeaderParam(CloudFilesHeaders.CDN_LOG_RETENTION) boolean logRetention);
-
-   /**
-    * @see CloudFilesClient#updateCDN(long)
-    */
-   @Named("UpdateCDNEnabledContainerMetadata")
-   @POST
-   @Path("/{container}")
-   @ResponseParser(ParseCdnUriFromHeaders.class)
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<URI> updateCDN(@PathParam("container") String container,
-                                   @HeaderParam(CloudFilesHeaders.CDN_TTL) long ttl);
-
-   /**
-    * @see CloudFilesClient#disableCDN
-    */
-   @Named("DisableCDNEnabledContainer")
-   @POST
-   @Path("/{container}")
-   @Headers(keys = CloudFilesHeaders.CDN_ENABLED, values = "False")
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<Boolean> disableCDN(@PathParam("container") String container);
-
-   /**
-    * @see CloudFilesClient#purgeCDNObject(String, String, Iterable)
-    */
-   @Named("PurgeCDNEnabledObject")
-   @DELETE
-   @Path("/{container}/{object}")
-   @Headers(keys = CloudFilesHeaders.CDN_CONTAINER_PURGE_OBJECT_EMAIL, values = "{email}")
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<Boolean> purgeCDNObject(@PathParam("container") String container, 
-                                            @PathParam("object") String object,
-                                            @BinderParam(BindIterableToHeadersWithPurgeCDNObjectEmail.class) Iterable<String> emails);
-
-   /**
-    * @see CloudFilesClient#purgeCDNObject(String, String)
-    */
-   @Named("PurgeCDNEnabledObject")
-   @DELETE
-   @Path("/{container}/{object}")
-   @Endpoint(CDNManagement.class)
-   ListenableFuture<Boolean> purgeCDNObject(@PathParam("container") String container, 
-                                            @PathParam("object") String object);
-
-   /**
-    * @see CloudFilesClient#setCDNStaticWebsiteIndex
-    */
-   @Named("UpdateCDNEnabledContainerMetadata")
-   @POST
-   @Path("/{container}")
-   @Headers(keys = CloudFilesHeaders.CDN_WEBSITE_INDEX, values = "{index}")
-   ListenableFuture<Boolean> setCDNStaticWebsiteIndex(@PathParam("container") String container,
-                                                      @PathParam("index") String index);
-
-   /**
-    * @see CloudFilesClient#setCDNStaticWebsiteError
-    */
-   @Named("UpdateCDNEnabledContainerMetadata")
-   @POST
-   @Path("/{container}")
-   @Headers(keys = CloudFilesHeaders.CDN_WEBSITE_ERROR, values = "{error}")
-   ListenableFuture<Boolean> setCDNStaticWebsiteError(@PathParam("container") String container,
-                                                      @PathParam("error") String error);
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesClient.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesClient.java b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesClient.java
index 8adcb80..9834133 100644
--- a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesClient.java
+++ b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CloudFilesClient.java
@@ -16,23 +16,59 @@
  */
 package org.jclouds.cloudfiles;
 
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.jclouds.blobstore.BlobStoreFallbacks.NullOnContainerNotFound;
+import static org.jclouds.cloudfiles.reference.CloudFilesHeaders.CDN_CONTAINER_PURGE_OBJECT_EMAIL;
+import static org.jclouds.cloudfiles.reference.CloudFilesHeaders.CDN_ENABLED;
+import static org.jclouds.cloudfiles.reference.CloudFilesHeaders.CDN_LOG_RETENTION;
+import static org.jclouds.cloudfiles.reference.CloudFilesHeaders.CDN_TTL;
+import static org.jclouds.cloudfiles.reference.CloudFilesHeaders.CDN_WEBSITE_ERROR;
+import static org.jclouds.cloudfiles.reference.CloudFilesHeaders.CDN_WEBSITE_INDEX;
+
 import java.net.URI;
 import java.util.Set;
 
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.HEAD;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
+import org.jclouds.cloudfiles.binders.BindIterableToHeadersWithPurgeCDNObjectEmail;
 import org.jclouds.cloudfiles.domain.ContainerCDNMetadata;
+import org.jclouds.cloudfiles.functions.ParseCdnUriFromHeaders;
+import org.jclouds.cloudfiles.functions.ParseContainerCDNMetadataFromHeaders;
 import org.jclouds.cloudfiles.options.ListCdnContainerOptions;
+import org.jclouds.openstack.filters.AuthenticateRequest;
+import org.jclouds.openstack.swift.Storage;
 import org.jclouds.openstack.swift.SwiftClient;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.Endpoint;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.Headers;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
 
-/**
- * Provides access to Cloud Files via their REST API.
- *
- * @see <a href="http://docs.rackspace.com/files/api/v1/cf-devguide/content/index.html">Cloud Files</a>
- */
+/** Provides access to Cloud Files via their REST API. */
+@RequestFilters(AuthenticateRequest.class)
+@Endpoint(Storage.class)
 public interface CloudFilesClient extends SwiftClient {
 
    /**
     * Retrieve a list of existing CDN-enabled containers.
     */
+   @Named("ListCDNEnabledContainers")
+   @GET
+   @Consumes(APPLICATION_JSON)
+   @QueryParams(keys = "format", values = "json")
+   @Path("/")
+   @Endpoint(CDNManagement.class)
    Set<ContainerCDNMetadata> listCDNContainers(ListCdnContainerOptions... options);
 
    /**
@@ -45,7 +81,13 @@ public interface CloudFilesClient extends SwiftClient {
     * whether the container is currently marked to allow public serving of objects via CDN. The log_retention setting
     * specifies whether the CDN access logs should be collected and stored in the Cloud Files storage system.
     */
-   ContainerCDNMetadata getCDNMetadata(String container);
+   @Named("ListCDNEnabledContainerMetadata")
+   @HEAD
+   @ResponseParser(ParseContainerCDNMetadataFromHeaders.class)
+   @Fallback(NullOnContainerNotFound.class)
+   @Path("/{container}")
+   @Endpoint(CDNManagement.class)
+   ContainerCDNMetadata getCDNMetadata(@PathParam("container") String container);
 
    /**
     * Before a container can be CDN-enabled, it must exist in the storage system. When a container is CDN-enabled, any
@@ -62,37 +104,80 @@ public interface CloudFilesClient extends SwiftClient {
     * will stay populated on CDN edge servers for the entire period. The most popular objects stay cached based on the
     * edge location's logic.    
     */
-   URI enableCDN(String container, long ttl, boolean logRetention);
+   @Named("CDNEnableContainer")
+   @PUT
+   @Path("/{container}")
+   @Headers(keys = CDN_ENABLED, values = "True")
+   @ResponseParser(ParseCdnUriFromHeaders.class)
+   @Endpoint(CDNManagement.class)
+   URI enableCDN(@PathParam("container") String container,
+                 @HeaderParam(CDN_TTL) long ttl,
+                 @HeaderParam(CDN_LOG_RETENTION) boolean logRetention);
+
 
    /**
     * @see CloudFilesClient#enableCDN(String, long, boolean)
     */
-   URI enableCDN(String container, long ttl);
+   @Named("CDNEnableContainer")
+   @PUT
+   @Path("/{container}")
+   @Headers(keys = CDN_ENABLED, values = "True")
+   @ResponseParser(ParseCdnUriFromHeaders.class)
+   @Endpoint(CDNManagement.class)
+   URI enableCDN(@PathParam("container") String container, @HeaderParam(CDN_TTL) long ttl);
    
    /**
     * @see CloudFilesClient#enableCDN(String, long, boolean)
     */
-   URI enableCDN(String container);
+   @Named("CDNEnableContainer")
+   @PUT
+   @Path("/{container}")
+   @Headers(keys = CDN_ENABLED, values = "True")
+   @ResponseParser(ParseCdnUriFromHeaders.class)
+   @Endpoint(CDNManagement.class)
+   URI enableCDN(@PathParam("container") String container);
    
    /**
     * @see CloudFilesClient#enableCDN(String, long, boolean)
     */
-   URI updateCDN(String container, long ttl, boolean logRetention);
+   @Named("UpdateCDNEnabledContainerMetadata")
+   @POST
+   @Path("/{container}")
+   @ResponseParser(ParseCdnUriFromHeaders.class)
+   @Endpoint(CDNManagement.class)
+   URI updateCDN(@PathParam("container") String container,
+                 @HeaderParam(CDN_TTL) long ttl,
+                 @HeaderParam(CDN_LOG_RETENTION) boolean logRetention);
 
    /**
     * @see CloudFilesClient#enableCDN(String, long, boolean)
     */
-   URI updateCDN(String container, boolean logRetention);
+   @Named("UpdateCDNEnabledContainerMetadata")
+   @POST
+   @Path("/{container}")
+   @ResponseParser(ParseCdnUriFromHeaders.class)
+   @Endpoint(CDNManagement.class)
+   URI updateCDN(@PathParam("container") String container, @HeaderParam(CDN_LOG_RETENTION) boolean logRetention);
 
    /**
     * @see CloudFilesClient#enableCDN(String, long, boolean)
     */
-   URI updateCDN(String container, long ttl);
+   @Named("UpdateCDNEnabledContainerMetadata")
+   @POST
+   @Path("/{container}")
+   @ResponseParser(ParseCdnUriFromHeaders.class)
+   @Endpoint(CDNManagement.class)
+   URI updateCDN(@PathParam("container") String container, @HeaderParam(CDN_TTL) long ttl);
 
    /**
     * Remove the container from the CDN. Please note, however, that objects remain public until their TTL expires.
     */
-   boolean disableCDN(String container);
+   @Named("DisableCDNEnabledContainer")
+   @POST
+   @Path("/{container}")
+   @Headers(keys = CDN_ENABLED, values = "False")
+   @Endpoint(CDNManagement.class)
+   boolean disableCDN(@PathParam("container") String container);
    
    /**
     * You can purge a CDN-enabled object when you find it absolutely necessary to remove the object from public access
@@ -107,12 +192,23 @@ public interface CloudFilesClient extends SwiftClient {
     * (2) by creating a support ticket to purge entire containers. The 25-object limit does not apply when purging an
     * entire container via Support.    
     */
-   boolean purgeCDNObject(String container, String object, Iterable<String> emails);
+   @Named("PurgeCDNEnabledObject")
+   @DELETE
+   @Path("/{container}/{object}")
+   @Headers(keys = CDN_CONTAINER_PURGE_OBJECT_EMAIL, values = "{email}")
+   @Endpoint(CDNManagement.class)
+   boolean purgeCDNObject(@PathParam("container") String container, @PathParam("object") String object,
+         @BinderParam(BindIterableToHeadersWithPurgeCDNObjectEmail.class) Iterable<String> emails);
+
    
    /**
     * @see CloudFilesClient#purgeCDNObject(String, String, Iterable)
     */
-   boolean purgeCDNObject(String container, String object);
+   @Named("PurgeCDNEnabledObject")
+   @DELETE
+   @Path("/{container}/{object}")
+   @Endpoint(CDNManagement.class)
+   boolean purgeCDNObject(@PathParam("container") String container, @PathParam("object") String object);
 
    /**
     * You may use your Cloud Files account to create a static website on the World Wide Web. First, you must CDN-enable
@@ -130,7 +226,11 @@ public interface CloudFilesClient extends SwiftClient {
     * is outside the scope of this documentation. Once you have your CNAME established, map your domain name to your
     * Cloud Files CDN URL to get your site up and running on the Web.    
     */
-   boolean setCDNStaticWebsiteIndex(String container, String index);
+   @Named("UpdateCDNEnabledContainerMetadata")
+   @POST
+   @Path("/{container}")
+   @Headers(keys = CDN_WEBSITE_INDEX, values = "{index}")
+   boolean setCDNStaticWebsiteIndex(@PathParam("container") String container, @PathParam("index") String index);
 
    /**
     * You may create and set custom error pages for visitors to your website; currently, only 401 (Unauthorized) and
@@ -143,5 +243,9 @@ public interface CloudFilesClient extends SwiftClient {
     * 
     * You need only set the error parameter once for your entire static website.    
     */
-   boolean setCDNStaticWebsiteError(String container, String error);
+   @Named("UpdateCDNEnabledContainerMetadata")
+   @POST
+   @Path("/{container}")
+   @Headers(keys = CDN_WEBSITE_ERROR, values = "{error}")
+   boolean setCDNStaticWebsiteError(@PathParam("container") String container, @PathParam("error") String error);
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/CloudFilesAsyncBlobStore.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/CloudFilesAsyncBlobStore.java b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/CloudFilesAsyncBlobStore.java
deleted file mode 100644
index 1f1912c..0000000
--- a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/CloudFilesAsyncBlobStore.java
+++ /dev/null
@@ -1,98 +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.cloudfiles.blobstore;
-
-import static com.google.common.util.concurrent.Futures.transform;
-
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Provider;
-import javax.inject.Singleton;
-
-import org.jclouds.Constants;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.functions.BlobToHttpGetOptions;
-import org.jclouds.blobstore.options.CreateContainerOptions;
-import org.jclouds.blobstore.strategy.internal.FetchBlobMetadata;
-import org.jclouds.blobstore.util.BlobUtils;
-import org.jclouds.cloudfiles.CloudFilesAsyncClient;
-import org.jclouds.cloudfiles.CloudFilesClient;
-import org.jclouds.cloudfiles.blobstore.functions.EnableCDNAndCache;
-import org.jclouds.collect.Memoized;
-import org.jclouds.domain.Location;
-import org.jclouds.openstack.swift.blobstore.SwiftAsyncBlobStore;
-import org.jclouds.openstack.swift.blobstore.functions.BlobStoreListContainerOptionsToListContainerOptions;
-import org.jclouds.openstack.swift.blobstore.functions.BlobToObject;
-import org.jclouds.openstack.swift.blobstore.functions.ContainerToResourceList;
-import org.jclouds.openstack.swift.blobstore.functions.ContainerToResourceMetadata;
-import org.jclouds.openstack.swift.blobstore.functions.ObjectToBlob;
-import org.jclouds.openstack.swift.blobstore.functions.ObjectToBlobMetadata;
-import org.jclouds.openstack.swift.blobstore.strategy.internal.AsyncMultipartUploadStrategy;
-
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
-/**
- * 
- * @deprecated will be removed in jclouds 1.7, as async interfaces are no longer
- *             supported. Please use {@link CloudFilesBlobStore}
- */
-@Deprecated
-@Singleton
-public class CloudFilesAsyncBlobStore extends SwiftAsyncBlobStore {
-   private final EnableCDNAndCache enableCDNAndCache;
-
-   @Inject
-   protected CloudFilesAsyncBlobStore(BlobStoreContext context, BlobUtils blobUtils,
-            @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor, Supplier<Location> defaultLocation,
-            @Memoized Supplier<Set<? extends Location>> locations, CloudFilesClient sync, CloudFilesAsyncClient async,
-            ContainerToResourceMetadata container2ResourceMd,
-            BlobStoreListContainerOptionsToListContainerOptions container2ContainerListOptions,
-            ContainerToResourceList container2ResourceList, ObjectToBlob object2Blob, BlobToObject blob2Object,
-            ObjectToBlobMetadata object2BlobMd, BlobToHttpGetOptions blob2ObjectGetOptions,
-            Provider<FetchBlobMetadata> fetchBlobMetadataProvider, EnableCDNAndCache enableCDNAndCache,
-            Provider<AsyncMultipartUploadStrategy> multipartUploadStrategy) {
-      super(context, blobUtils, userExecutor, defaultLocation, locations, sync, async, container2ResourceMd,
-               container2ContainerListOptions, container2ResourceList, object2Blob, blob2Object, object2BlobMd,
-               blob2ObjectGetOptions, fetchBlobMetadataProvider, multipartUploadStrategy);
-      this.enableCDNAndCache = enableCDNAndCache;
-   }
-
-   @Override
-   public ListenableFuture<Boolean> createContainerInLocation(Location location, final String container,
-            CreateContainerOptions options) {
-
-      ListenableFuture<Boolean> returnVal = createContainerInLocation(location, container);
-      if (options.isPublicRead())
-         return transform(createContainerInLocation(location, container), new Function<Boolean, Boolean>() {
-
-            @Override
-            public Boolean apply(Boolean input) {
-               if (Boolean.TRUE.equals(input)) {
-                  return enableCDNAndCache.apply(container) != null;
-               }
-               return false;
-            }
-
-         }, userExecutor);
-      return returnVal;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/config/CloudFilesBlobStoreContextModule.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/config/CloudFilesBlobStoreContextModule.java b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/config/CloudFilesBlobStoreContextModule.java
index 7113a42..6454c50 100644
--- a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/config/CloudFilesBlobStoreContextModule.java
+++ b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/blobstore/config/CloudFilesBlobStoreContextModule.java
@@ -22,11 +22,9 @@ import java.util.concurrent.TimeUnit;
 import javax.inject.Singleton;
 
 import org.jclouds.cloudfiles.CloudFilesClient;
-import org.jclouds.cloudfiles.blobstore.CloudFilesAsyncBlobStore;
 import org.jclouds.cloudfiles.blobstore.CloudFilesBlobStore;
 import org.jclouds.cloudfiles.blobstore.functions.CloudFilesObjectToBlobMetadata;
 import org.jclouds.cloudfiles.domain.ContainerCDNMetadata;
-import org.jclouds.openstack.swift.blobstore.SwiftAsyncBlobStore;
 import org.jclouds.openstack.swift.blobstore.SwiftBlobStore;
 import org.jclouds.openstack.swift.blobstore.config.SwiftBlobStoreContextModule;
 import org.jclouds.openstack.swift.blobstore.functions.ObjectToBlobMetadata;
@@ -59,7 +57,6 @@ public class CloudFilesBlobStoreContextModule extends SwiftBlobStoreContextModul
    protected void configure() {
       super.configure();
       bind(SwiftBlobStore.class).to(CloudFilesBlobStore.class);
-      bind(SwiftAsyncBlobStore.class).to(CloudFilesAsyncBlobStore.class);
       bind(ObjectToBlobMetadata.class).to(CloudFilesObjectToBlobMetadata.class);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesHttpApiModule.java b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesHttpApiModule.java
new file mode 100644
index 0000000..3ce8c3a
--- /dev/null
+++ b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesHttpApiModule.java
@@ -0,0 +1,92 @@
+/*
+ * 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.cloudfiles.config;
+
+import java.net.URI;
+import java.util.Map;
+
+import javax.inject.Singleton;
+
+import org.jclouds.cloudfiles.CDNManagement;
+import org.jclouds.cloudfiles.CloudFilesClient;
+import org.jclouds.location.suppliers.RegionIdToURISupplier;
+import org.jclouds.openstack.keystone.v1_1.config.AuthenticationServiceModule;
+import org.jclouds.openstack.keystone.v1_1.suppliers.V1DefaultRegionIdSupplier;
+import org.jclouds.openstack.swift.CommonSwiftClient;
+import org.jclouds.openstack.swift.Storage;
+import org.jclouds.openstack.swift.config.SwiftHttpApiModule;
+import org.jclouds.rest.ConfiguresHttpApi;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Supplier;
+import com.google.inject.Provides;
+import com.google.inject.Scopes;
+
+@ConfiguresHttpApi
+public class CloudFilesHttpApiModule extends SwiftHttpApiModule<CloudFilesClient> {
+   public CloudFilesHttpApiModule() {
+      super(CloudFilesClient.class);
+   }
+
+   @Override
+   protected void bindResolvedClientsToCommonSwift() {
+      bind(CommonSwiftClient.class).to(CloudFilesClient.class).in(Scopes.SINGLETON);
+   }
+
+   public static class StorageAndCDNManagementEndpointModule extends AuthenticationServiceModule {
+      @Provides
+      @Singleton
+      @CDNManagement
+      protected Supplier<URI> provideCDNUrl(RegionIdToURISupplier.Factory factory,
+               V1DefaultRegionIdSupplier.Factory defaultRegion) {
+         return valueForKey(factory.createForApiTypeAndVersion("cloudFilesCDN", null),
+                  defaultRegion.createForApiType("cloudFilesCDN"));
+      }
+
+      @Provides
+      @Singleton
+      @Storage
+      protected Supplier<URI> provideStorageUrl(RegionIdToURISupplier.Factory factory,
+               V1DefaultRegionIdSupplier.Factory defaultRegion) {
+         return valueForKey(factory.createForApiTypeAndVersion("cloudFiles", null),
+                  defaultRegion.createForApiType("cloudFiles"));
+      }
+
+   }
+   
+   /**
+    * Supplies a value that corresponds to a particular key in a map, or null, if not found
+    */
+   @VisibleForTesting
+   static <K, V> Supplier<V> valueForKey(final Supplier<Map<K, Supplier<V>>> input, final Supplier<K> key) {
+      return new Supplier<V>() {
+
+         @Override
+         public V get() {
+            K keyToFind = key.get();
+            Supplier<V> value = input.get().get(keyToFind);
+            return value != null ? value.get() : null;
+         }
+
+         @Override
+         public String toString() {
+            return "withKey()";
+         }
+      };
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModule.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModule.java b/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModule.java
deleted file mode 100644
index 25c5042..0000000
--- a/apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModule.java
+++ /dev/null
@@ -1,99 +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.cloudfiles.config;
-
-import static org.jclouds.reflect.Reflection2.typeToken;
-
-import java.net.URI;
-import java.util.Map;
-
-import javax.inject.Singleton;
-
-import org.jclouds.cloudfiles.CDNManagement;
-import org.jclouds.cloudfiles.CloudFilesAsyncClient;
-import org.jclouds.cloudfiles.CloudFilesClient;
-import org.jclouds.location.suppliers.RegionIdToURISupplier;
-import org.jclouds.openstack.keystone.v1_1.config.AuthenticationServiceModule;
-import org.jclouds.openstack.keystone.v1_1.suppliers.V1DefaultRegionIdSupplier;
-import org.jclouds.openstack.swift.CommonSwiftAsyncClient;
-import org.jclouds.openstack.swift.CommonSwiftClient;
-import org.jclouds.openstack.swift.Storage;
-import org.jclouds.openstack.swift.config.SwiftRestClientModule;
-import org.jclouds.rest.ConfiguresRestClient;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.Provides;
-import com.google.inject.Scopes;
-
-@ConfiguresRestClient
-public class CloudFilesRestClientModule extends SwiftRestClientModule<CloudFilesClient, CloudFilesAsyncClient> {
-   public CloudFilesRestClientModule() {
-      super(typeToken(CloudFilesClient.class), typeToken(CloudFilesAsyncClient.class), ImmutableMap
-               .<Class<?>, Class<?>> of());
-   }
-
-   @Override
-   protected void bindResolvedClientsToCommonSwift() {
-      bind(CommonSwiftClient.class).to(CloudFilesClient.class).in(Scopes.SINGLETON);
-      bind(CommonSwiftAsyncClient.class).to(CloudFilesAsyncClient.class).in(Scopes.SINGLETON);
-   }
-
-   public static class StorageAndCDNManagementEndpointModule extends AuthenticationServiceModule {
-      @Provides
-      @Singleton
-      @CDNManagement
-      protected Supplier<URI> provideCDNUrl(RegionIdToURISupplier.Factory factory,
-               V1DefaultRegionIdSupplier.Factory defaultRegion) {
-         return valueForKey(factory.createForApiTypeAndVersion("cloudFilesCDN", null),
-                  defaultRegion.createForApiType("cloudFilesCDN"));
-      }
-
-      @Provides
-      @Singleton
-      @Storage
-      protected Supplier<URI> provideStorageUrl(RegionIdToURISupplier.Factory factory,
-               V1DefaultRegionIdSupplier.Factory defaultRegion) {
-         return valueForKey(factory.createForApiTypeAndVersion("cloudFiles", null),
-                  defaultRegion.createForApiType("cloudFiles"));
-      }
-
-   }
-   
-   /**
-    * Supplies a value that corresponds to a particular key in a map, or null, if not found
-    */
-   @VisibleForTesting
-   static <K, V> Supplier<V> valueForKey(final Supplier<Map<K, Supplier<V>>> input, final Supplier<K> key) {
-      return new Supplier<V>() {
-
-         @Override
-         public V get() {
-            K keyToFind = key.get();
-            Supplier<V> value = input.get().get(keyToFind);
-            return value != null ? value.get() : null;
-         }
-
-         @Override
-         public String toString() {
-            return "withKey()";
-         }
-      };
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/CloudFilesClientLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/CloudFilesClientLiveTest.java b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/CloudFilesClientLiveTest.java
index b0c8751..3ccdb44 100644
--- a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/CloudFilesClientLiveTest.java
+++ b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/CloudFilesClientLiveTest.java
@@ -45,7 +45,7 @@ public class CloudFilesClientLiveTest extends CommonSwiftClientLiveTest<CloudFil
    
    @Override
    public CloudFilesClient getApi() {
-      return view.unwrap(CloudFilesApiMetadata.CONTEXT_TOKEN).getApi();
+      return view.unwrapApi(CloudFilesClient.class);
    }
    
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java
index 11ef7ba..dc5151d 100644
--- a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java
+++ b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java
@@ -27,8 +27,8 @@ import org.jclouds.blobstore.internal.BaseBlobSignerExpectTest;
 import org.jclouds.cloudfiles.CloudFilesApiMetadata;
 import org.jclouds.cloudfiles.CloudFilesApiMetadata.CloudFilesTemporaryUrlExtensionModule;
 import org.jclouds.cloudfiles.blobstore.config.CloudFilesBlobStoreContextModule;
-import org.jclouds.cloudfiles.config.CloudFilesRestClientModule;
-import org.jclouds.cloudfiles.config.CloudFilesRestClientModule.StorageAndCDNManagementEndpointModule;
+import org.jclouds.cloudfiles.config.CloudFilesHttpApiModule;
+import org.jclouds.cloudfiles.config.CloudFilesHttpApiModule.StorageAndCDNManagementEndpointModule;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
 import org.testng.annotations.Test;
@@ -142,7 +142,7 @@ public class CloudFilesBlobSignerExpectTest extends BaseBlobSignerExpectTest {
             .defaultModules(
                   ImmutableSet.<Class<? extends Module>> builder()
                       .add(StorageAndCDNManagementEndpointModule.class)
-                      .add(CloudFilesRestClientModule.class)
+                      .add(CloudFilesHttpApiModule.class)
                       .add(CloudFilesBlobStoreContextModule.class)
                       .add(StaticTimeAndTemporaryUrlKeyModule.class).build()).build();
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModuleTest.java
----------------------------------------------------------------------
diff --git a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModuleTest.java b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModuleTest.java
index 80c1632..a0066c8 100644
--- a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModuleTest.java
+++ b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/config/CloudFilesRestClientModuleTest.java
@@ -31,16 +31,16 @@ public class CloudFilesRestClientModuleTest {
    @Test
    public void testWithKey() {
       assertEquals(
-            CloudFilesRestClientModule.<String, String> valueForKey(
-                  Suppliers.<Map<String, Supplier<String>>> ofInstance(ImmutableMap.of("foo",
-                        Suppliers.ofInstance("bar"))), Suppliers.ofInstance("foo")).get(), "bar");
+            CloudFilesHttpApiModule.<String, String> valueForKey(Suppliers
+                        .<Map<String, Supplier<String>>>ofInstance(ImmutableMap.of("foo", Suppliers.ofInstance("bar"))),
+                  Suppliers.ofInstance("foo")).get(), "bar");
    }
 
    @Test
    public void testWithKeyUnmatchedIsNull() {
       assertEquals(
-            CloudFilesRestClientModule.<String, String> valueForKey(
-                  Suppliers.<Map<String, Supplier<String>>> ofInstance(ImmutableMap.of("boo",
-                        Suppliers.ofInstance("bar"))), Suppliers.ofInstance("foo")).get(), null);
+            CloudFilesHttpApiModule.<String, String> valueForKey(Suppliers
+                        .<Map<String, Supplier<String>>>ofInstance(ImmutableMap.of("boo", Suppliers.ofInstance("bar"))),
+                  Suppliers.ofInstance("foo")).get(), null);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0ab1988a/providers/cloudfiles-uk/src/test/java/org/jclouds/rackspace/cloudfiles/CloudFilesUKClientLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/cloudfiles-uk/src/test/java/org/jclouds/rackspace/cloudfiles/CloudFilesUKClientLiveTest.java b/providers/cloudfiles-uk/src/test/java/org/jclouds/rackspace/cloudfiles/CloudFilesUKClientLiveTest.java
index d36ca44..57bb3c1 100644
--- a/providers/cloudfiles-uk/src/test/java/org/jclouds/rackspace/cloudfiles/CloudFilesUKClientLiveTest.java
+++ b/providers/cloudfiles-uk/src/test/java/org/jclouds/rackspace/cloudfiles/CloudFilesUKClientLiveTest.java
@@ -18,7 +18,6 @@ package org.jclouds.rackspace.cloudfiles;
 
 import static org.testng.Assert.assertEquals;
 
-import org.jclouds.cloudfiles.CloudFilesApiMetadata;
 import org.jclouds.cloudfiles.CloudFilesClient;
 import org.jclouds.cloudfiles.CloudFilesClientLiveTest;
 import org.jclouds.openstack.swift.domain.SwiftObject;
@@ -37,7 +36,7 @@ public class CloudFilesUKClientLiveTest extends CloudFilesClientLiveTest {
 
    @Override
    public CloudFilesClient getApi() {
-      return view.unwrap(CloudFilesApiMetadata.CONTEXT_TOKEN).getApi();
+      return view.unwrapApi(CloudFilesClient.class);
    }
    
    @Override