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:30:53 UTC
[16/52] [abbrv] 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/use-agentproxy-008
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